PHP & MySQL niveau 1  

Les commandes SQL

Nous allons ici revoir les principales commandes SQL (Structured Query Language), qui nous permettront de travailler avec MySQL.

Insérer des données (INSERT)

  1. INSERT [INTO] nom_de_table [(nom_colonne,...)] VALUES (),...

Il s'agit d'insérer de nouveaux enregistrements en fonction des valeurs spécifiées par VALUES.

  1. mysql> INSERT INTO table1 (champ1, champ2) VALUES ('aa','bb');

 

Modifier des données (UPDATE)

  1. UPDATE nom_de_table
  2. SET nom_colonne1=expr1 [, nom_colonne2=expr2, ...]   
  3. [WHERE where_definition]

 

UPDATE met à jour des enregistrements dans une table avec de nouvelles valeurs et renvoie le nombre d'enregistrements modifiés.

La clause SET indique les colonnes à modifier et les valeurs à leur donner.

  1. mysql> UPDATE table1 SET nom='PIERRE de GEYER'

 

La clause WHERE, si elle est fournie, spécifie les enregistrements à mettre à jour. Sinon, tous les enregistrements le sont. 

  1. mysql> UPDATE table1 SET nom='DASPET', prenom='Eric' WHERE id=5

 

Effacer des données (DELETE)

DELETE efface de la table nom_de_table les enregistrements qui satisfont la condition donnée par clause_where, et retourne le nombre d'enregistrements effacés. Si vous exécutez un DELETE sans clause WHERE, tous les enregistrements sont effacés.

  1. DELETE FROM table1 WHERE user = 'daspet' ORDER BY temps LIMIT 1

 

Filtrer avec la clause WHERE

Il est généralement utile de définir une condition dans une requête SQL. On utilise le mot-clé WHERE pour indiquer la ou (les) condition(s) s'appliquant à la requête. La clause WHERE s'applique à la majorité des commandes SQL. Il s'agit d'un paramètre supplémentaire permettant de limiter le champ d'action.

  1. mysql> SELECT * FROM adherent
  2.     WHERE age=35

 

Sélectionner des données (SELECT)

Pour sélectionner des données dans une base SQL, on utilise la commande SELECT.

La structure simplifiée de cette commande est la suivante :

  1. SELECT champs
  2. [FROM table ]
  3. [WHERE condition]

 

Le paramètre champs indique les données que vous souhaitez obtenir. Généralement, on utilise directement le nom des champs que l'on souhaite connaître :

  1. SELECT nom, prenom, age FROM utilisateur

 

Trier les éléments

Il est courant de permettre à vos utilisateurs de classer des résultats, de les classer vous-même par défaut, etc. Dans ce cas, on utilise la clause ORDER BY.

Vous pouvez faire référence aux champs sélectionnés en sortie dans des clauses ORDER BY et GROUP BY en utilisant les noms des champs ou leurs alias :

  1. SELECT * FROM tournament ORDER BY resultat;

 

Connaître le nombre d'enregistrements

Il n'est pas rare de voir, sur des applications permettant une consultation via une arborescence, le nombre d'articles contenus dans une catégorie.

Une technique, malheureusement répandue, pour calculer le nombre d'enregistrements dans une table, consiste à récupérer l'ensemble de la table et à calculer le nombre de lignes. Cette méthode est à proscrire absolument, car elle implique une forte charge sans aucune nécessité.

  1. SELECT * FROM produit WHERE prix > 15 ;

 

On utilisera alors la fonction count(*) pour éviter cette surcharge.

  1. SELECT count(*) AS compteur FROM produit WHERE prix > 15 ;

 

PHP et MySQL jusqu'à 5.x (extension mysqli)

Travailler avec l'extension mysqli vous permet de travailler soit en mode procédural soit suivant le mode objet. Dans un premier temps nous allons nous attacher à aborder une méthodologie procédurale.

Connexion au serveur de données

Avant de travailler avec un serveur de gestion de base de données comme MySQL, il faut ouvrir une connexion. Cette connexion sera le canal par lequel PHP et MySQL communiqueront l'un avec l'autre. La méthode permettant de se connecter à une base de données MySQL est mysqli_connect().

 

Connexion au serveur de données
  1. <?php
  2. if( $link = mysqli_connect('localhost', 'login', 'secret' ) > 0 )
  3.     echo 'Connexion réussie !' ;
  4. else
  5.     echo 'Connexion impossible !' ;
  6. ?>

Sélection de la base

Un serveur MySQL peut héberger plusieurs bases de données. En général on conseille d'en allouer une par application. À moins que votre utilisateur n'ait le droit d'en interroger qu'une seule (comme c'est souvent le cas dans les hébergements mutualisés), il convient de spécifier celle qu'on utilise.

Avec l'extension mysql il n'est pas possible de spécifier la base de données que l'on veut séléctionner dans la fonction mysql_connect(), il faut utiliser la fonction mysql_select_db() pour la spécifier.

 

Sélection de la base
  1. <?php
  2. $link = mysqli_connect('localhost', 'login','secret','db1');
  3. mysqli_select_db( $link, 'times' );
  4. ?>


Exécution de la requête

L'exécution d'une requête passe par l'appel de la fonction mysqli_query(). Vous devrez lui passer en arguments l'identifiant de connexion au serveur et la requête SQL à exécuter, dans cet ordre.

Quand vous exécutez une requête avec la fonction mysqli_query(), vous ne faites qu'envoyer votre ordre à MySQL. Il faut ensuite le traiter. Pour cela, on distinguera trois cas :

  • après une requête de sélection,
  • après une requête d'insertion
  • après une requête de modification.

Pour une requête SELECT la fonction mysqli_query() renvoie un identifiant de résultat que vous pourrez réutiliser par la suite pour le lire.

 

Exécution de la requête
  1. <?php
  2. $result = mysqli_query($link, 'SELECT ma_colonne FROM ma_table')
  3.   or trigger_error('Requête invalide', E_USER_ERROR);
  4. ?>

 


Retour à l'accueil des articles