Fermer
DéveloppementWeb

ezSQL vous facilite les requêtes SQL

Il est vrai que lorsqu’on souhaite réaliser de gros projets, on se tourne plutôt vers un CMS, ou un framework du style Symfony, CodeIgniter, etc. Cependant, sur tous vos petits projets nécessitant une base de données (mySQL, Oracle, SQLite, PostgreSQL), ezSQL vous apportera un confort non négligeable ! En effet, quelque soit la base de données que vous utiliserez, le code écrit grâce à ezSQL sera unique.

ezSQL est une classe PHP open source fournissant une couche d’abstraction pour votre base de données. Cette classe est utilisée sur plus de 100 000 sites web, d’après l’auteur, dont de beaux projets tels que WordPress.

Nous allons donc voir dans cet article les différentes fonctionnalités proposées par ezSQL.

Mise en place de ezSQL

Pour installer ezSQL, dézippez l’archive samples.zip et envoyez le contenu du dossier vers votre serveur. Une fois le transfert effectué, voici le code à ajouter au début de votre fichier PHP :

[sourcecode language=”PHP”]
// Appel de ezSQL core
include_once("ezSQL/shared/ez_sql_core.php");

// Appel du composant de DB ezSQL spécifique
include_once("ezSQL/mysql/ez_sql_mysql.php");

// Initialisation de l’objet DB et connection
$db = new ezSQL_mysql(‘root’,’root’,’testEzSQL’,’localhost’);
[/sourcecode]

Modifiez simplement les différents chemins pour accéder à ez_sql_core.php et à ez_sql_mysql.php ainsi que les informations permettant d’accéder à la base de données (utilisateur, mot de passe, nom de la base, serveur).

Exemple de différentes requête SQL

Pour les différents exemples qui vont suivre, j’ai créé la table suivante :

[sourcecode language=”SQL”]
— Structure de la table `bnt`

CREATE TABLE `bnt` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`titre` text NOT NULL,
`categorie` text NOT NULL,
`contenu` text NOT NULL,
`auteur` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

— Contenu de la table `bnt`

INSERT INTO `bnt` VALUES(1, ‘Prise en main de Sencha Touch’, ‘Développement Mobile’, ‘Comme l’article de Yohann le montre, les technologies web mobiles deviennent de plus en plus importantes dans le développement d’applications mobiles. Une application native apporte en effet une excellente expérience utilisateur, cependant, elle nécessite d’apprendre un langage particulier, très souvent différent d’une plateforme mobile à une autre. Déployer une application sur toutes les plateformes a donc un coût important. C’est ce point que viennent corriger les différents Framework Web mobiles dont vous avez déjà peut être entendu parler. Ils s’appellent jQuery Mobile, Sencha Touch, jQTouch, et il y a fort à parier qu’ils vont devenir de plus en plus utilisés.’, ‘Florent’);
INSERT INTO `bnt` VALUES(2, ‘Google Code annonce son support à Git’, ‘Google’, ‘Comme annoncé hier sur le site de webmonkey Google Code a finalement ajouté le support pour le Git, le très populaire système de contrôle de version. Git est un système de contrôle de version distribué, utilisé par de nombreux projets populaires, tels que le noyau Linux, Ruby on Rails et Android.’, ‘Yohann Poiron’);
INSERT INTO `bnt` VALUES(3, ‘Gridless : un framework basé sur l’amélioration progressive’, ‘Développement’, ‘L’amélioration progressive est un concept qui est basé sur l’idée de la séparation du fond et de la forme afin de permettre une simplification de l’affichage du contenu et ainsi rendre accessible à tous les utilisateurs un accès minimum à l’information en améliorant progressivement l’affichage en fonction du périphérique d’affichage de l’internaute.’, ‘Wilfried Soudet’);
[/sourcecode]

Vous retrouverez ce script dans les sources disponibles en téléchargement à la fin de l’article.

Exécution d’une requête

Pour réaliser une requête d’insertion, de modification ou plus généralement, n’importe quelle requête, il suffit d’utiliser la méthode query().

[sourcecode language=”PHP”]
$db->query("UPDATE bnt SET auteur = ‘Florent Suc’ WHERE id = 1");
[/sourcecode]

Cette requête aura pour effet de modifier le nom de l’auteur du premier élément.

Sélection d’enregistrements

Dès lors que vous souhaitez récupérer plusieurs enregistrements depuis la base de données, vous pouvez utiliser la méthode get_results().

[sourcecode language=”PHP”]
$articles = $db->get_results("SELECT titre, auteur FROM bnt");

foreach ( $articles as $article )
{
// Access data using object syntax
echo $article->titre.’ de ‘;
echo $article->auteur.'<br />’;
}
[/sourcecode]

Il devient alors très facile d’accéder aux différents enregistrements en utilisant la syntaxe de la programmation orientée objet (->).

Sélection d’un seul enregistrement

Vous aurez peut être besoin de récupérer un seul enregistrement. Vous utiliserez la méthode get_row() qui vous renverra l’enregistrement correspondant à la requête passée en paramètre.

[sourcecode language=”PHP”]
$art = $db->get_row("SELECT titre FROM bnt WHERE auteur=’Florent Suc’");
echo $art->titre;
[/sourcecode]

Récupération d’une variable

Là où les count(*) deviennent assez lourd à récupérer avec certaines classes, ezSQL vous fourni une méthode get_var() permettant de récupérer une variable.

[sourcecode language=”PHP”]
$nbArticles = $db->get_var("SELECT count(*) FROM bnt");
echo $nbArticles.’ articles’;
[/sourcecode]

Sélection d’une colonne

Vous aurez peut être besoin de sélectionner une colonne entière. La méthode get_col() vous permettra de la récupérer en fonction de son indice.

[sourcecode language=”PHP”]
$articles = $db->get_col("SELECT titre FROM bnt",0);

foreach ( $articles as $article )
{
echo $article;
}
[/sourcecode]

Debugage d’une requête

La fonction de débugage est une fonction très intéressante de ezSQL, puisqu’elle vous permettra d’obtenir de nombreuses informations sur la dernière requête effectuée.

[sourcecode language=”PHP”]
$db->debug();
[/sourcecode]

Voici le résultat d’une requête.

ezSQL vous facilite les requêtes SQL - Débugage d'une requête

Conclusion

Cette classe pourra donc vous accompagner sur tout vos micro-projets nécessitant une base de données. Personnellement, je trouve que ezSQL apporte un certain confort, notamment avec sa fonction de débugage qui m’aurait bien aidé à de nombreuses reprises 😉

Vous pouvez obtenir cette classe sur le site de l’auteur.

Voici les sources utilisées dans cet article. Elles comportent le script de création de la table BNT ainsi qu’un script PHP mettant en œuvre les différentes fonctions de ezSQL.

[download id=”5471″]

Que pensez vous des apports de cette classe ? Quelles sont, de manière générale, vos préférences en matière de développement SQL ?

Mots-clé : base de donnéesdeveloppeur webezSQLSQL
Florent Suc

L’auteur Florent Suc

Actuellement étudiant en MIAGE (Méthodes Informatiques Appliquées à la Gestion des Entreprises) à Toulouse, je suis avant tout passionné de technologies web, et notamment des solutions mobiles. Je suis par ailleurs un inconditionnel des sports de glisses, et vous aurez des chances de me croiser dans les Pyrénées 😉