Cours 6.6. Lire des données MySQL en PHP

Avant-propos

Nous supposerons sur cette page l'existence d'une variable $db qui contient les paramètres de connexion à la base de données qui est créée conformément au code présenté sur la page Connexion MySQL en PHP.

Dans les exemples du cours précédent, nous avons vu comment exécuter des requêtes MySQL en PHP. Ces requêtes du type INSERT ne retournent aucune valeur. Dans le cas d'une requête SELECT, MySQL va potentiellement retourner une série de lignes contenant des données qu'il convient de récupérer dans un tableau PHP.

Syntaxe

La syntaxe permettant de lire des données est similaire à une requête d'écriture. Après l'appel de la méthode execute(), il est possible d'appeller la méthode fetchAll() qui va retourner un tableau contenant les données demandées :

$query = $db->prepare( "SELECT * FROM `users` WHERE lastname = :nom" );
$query->bindValue(':nom', 'Page');
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);

$result est un tableau dont la première clé est le numéro de ligne (0, 1, 2, 3 ...). Chaque ligne contient plusieurs clés qui correspondent aux colonnes de la table :

array (size=3)
  0 => 
    array (size=3)
      'id' => int 1
      'lastname' => string 'Page' (length=4)
      'firstname' => string 'Lary' (length=4)
  1 => 
    array (size=3)
      'id' => int 2
      'lastname' => string 'Page' (length=4)
      'firstname' => string 'Tournela' (length=8)
  3 => 
    array (size=3)
      'id' => int 2
      'lastname' => string 'Page' (length=4)
      'firstname' => string 'Marc' (length=4)

Si la requête n'a retourné aucune ligne, le tableau est vide. Il convient de toujours vérifier le contenu du tableau afin d'éviter de futures erreurs (lors de l'affichage du tableau par exemple).

Exercice

À l'aide de phpMyAdmin, créez une nouvelle base de données nommée myBase

Exécutez dans phpMyAdmin la commande SQL suivante qui permet de créer et peupler une nouvelle table :

-- Create table
CREATE TABLE users (
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  lastname VARCHAR(100),
  firstname VARCHAR(100),
  email VARCHAR(255)
);

-- Insert rows
INSERT INTO `users` (`firstname`, `lastname`, `email`) VALUES ('Lary', 'Page', 'lary.page@google.com');
INSERT INTO `users` (`firstname`, `lastname`, `email`) VALUES ('Sergueï', 'Brin', 'serguei.brin@google.com');
INSERT INTO `users` (`firstname`, `lastname`, `email`) VALUES ('Elon', 'Musk', 'elon.musk@tesla.com');
INSERT INTO `users` (`firstname`, `lastname`, `email`) VALUES ('Steve', 'Jobs', 'steve.jobs@apple.com');
INSERT INTO `users` (`firstname`, `lastname`, `email`) VALUES ('Noël', 'Père', 'santa@clause.com');
  1. Après avoir écrit le code de connexion à la base de données, écrire le code permettant de récupérer le contenu de la table users.

  2. Modifier le code de la requête de façon à afficher uniquement les utilisateurs dont l'adresse email se termine par @google.com.

Voir aussi


Dernière mise à jour : 17/09/2022