📘 Chapitre 2 – Exécuter une requête SELECT et afficher les résultats
1. 🎯 Objectif pédagogique
Être capable d’exécuter une requête SELECT via PDO et d’afficher les résultats dans une page PHP.
2. 📚 Concepts abordés
- Méthode
query()
etprepare()/execute()
de PDO - Récupération des résultats avec
fetch()
etfetchAll()
- Boucles pour afficher les données (while/foreach)
- Gestion des exceptions lors de l’exécution des requêtes
- Affichage formaté dans une page web (HTML + PHP)
3. 🧠 Explication théorique
Pour exécuter une requête SELECT
, PDO offre deux approches principales :
- query() : utilisée pour des requêtes simples et directes.
- prepare() / execute() : utilisée pour des requêtes plus complexes ou sécurisées (avec paramètres).
Exemple de récupération simple :
$sql = "SELECT * FROM Utilisateur";
$result = $pdo->query($sql);
Les données peuvent ensuite être affichées en utilisant fetch()
(ligne par ligne) ou fetchAll()
(toutes les lignes en un tableau).
4. 🛠 Tutoriel pratique
Résumé du travail : Créer un fichier liste_utilisateurs.php
qui affiche les utilisateurs d’une table Utilisateur
.
Arborescence projet :
projet_bdd/
├── connexion.php
└── liste_utilisateurs.php
Étape 1 : Préparer la table Utilisateur
Exécuter dans MySQL :
CREATE TABLE Utilisateur (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(100),
email VARCHAR(100)
);
INSERT INTO Utilisateur (nom, email)
VALUES ('Alice', 'alice@test.com'), ('Bob', 'bob@test.com');
Étape 2 : Écrire la requête SELECT
Dans liste_utilisateurs.php
:
<?php
require 'connexion.php';
try {
$sql = "SELECT * FROM Utilisateur";
$stmt = $pdo->query($sql);
$utilisateurs = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($utilisateurs as $user) {
echo "ID : " . $user['id'] . " - Nom : " . $user['nom'] . " - Email : " . $user['email'] . "<br>";
}
} catch (PDOException $e) {
echo "Erreur : " . $e->getMessage();
}
Étape 3 : Test et affichage
- Accéder à http://localhost/projet_bdd/liste_utilisateurs.php.
- Vérifier que les utilisateurs s’affichent correctement.
Étape 4 : Affichage sous forme de tableau HTML (optionnel)
echo "<table border='1'>
<tr><th>ID</th><th>Nom</th><th>Email</th></tr>";
foreach ($utilisateurs as $user) {
echo "<tr><td>{$user['id']}</td><td>{$user['nom']}</td><td>{$user['email']}</td></tr>";
}
echo "</table>";
5. 🧾 Résumé et points-clés
query()
exécute une requête simple et retourne un objetPDOStatement
.fetchAll(PDO::FETCH_ASSOC)
retourne un tableau associatif de tous les résultats.- Utiliser des boucles pour parcourir et afficher les données.
- Toujours gérer les erreurs avec
try/catch
.