Leçon 3 / 8
Leçon 03 · Partie 1 — Bases de données
SELECT — Lire des données
La requête SELECT
SELECT est la requête SQL la plus utilisée. Elle sert à lire des données dans une table.
-- Sélectionner toutes les colonnes de tous les enregistrements
SELECT * FROM utilisateurs;
-- Sélectionner seulement certaines colonnes
SELECT nom, email FROM utilisateurs;
Exécuter un SELECT avec PDO
Quand la requête est fixe (pas de valeur variable), on utilise query() :
require_once 'connexion.php';
// Exécuter la requête
$stmt = $pdo->query("SELECT * FROM utilisateurs");
// Récupérer tous les résultats
$utilisateurs = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Afficher les résultats
foreach ($utilisateurs as $user) {
echo $user['nom'] . ' — ' . $user['email'] . '<br>';
}
FETCH_ASSOC retourne chaque ligne comme un tableau. Tu accèdes aux colonnes par leur nom : $user['nom'].
fetchAll() vs fetch()
// fetchAll() — récupère TOUTES les lignes d'un coup (tableau de tableaux)
$tous = $stmt->fetchAll(PDO::FETCH_ASSOC);
// fetch() — récupère UNE ligne à la fois (boucle manuelle)
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['nom'];
}
Utilise fetchAll() pour tout récupérer d'un coup. Utilise fetch() ligne par ligne si la table est très grande.
Afficher dans un tableau HTML
require_once 'connexion.php';
$utilisateurs = $pdo->query("SELECT * FROM utilisateurs")
->fetchAll(PDO::FETCH_ASSOC);
?>
<table>
<tr>
<th>Nom</th>
<th>Email</th>
<th>Âge</th>
</tr>
<?php foreach ($utilisateurs as $u): ?>
<tr>
<td><?= htmlspecialchars($u['nom']) ?></td>
<td><?= htmlspecialchars($u['email']) ?></td>
<td><?= $u['age'] ?></td>
</tr>
<?php endforeach; ?>
</table>
Toujours utiliser htmlspecialchars() quand tu affiches des données de la BDD. Ça empêche les attaques XSS — c'est quand un attaquant injecte du code JavaScript dans ta page.
Compter les résultats
// Compter le nombre de lignes retournées
$stmt = $pdo->query("SELECT COUNT(*) FROM utilisateurs");
$total = $stmt->fetchColumn();
echo "Il y a {$total} utilisateurs";
// À retenir
SELECT * FROM table— sélectionner toutes les colonnes$pdo->query("SELECT ...")— exécuter une requête simplefetchAll(PDO::FETCH_ASSOC)— récupérer tous les résultats en tableau associatiffetch()— récupérer une ligne à la fois- Toujours
htmlspecialchars()pour afficher des données de BDD en HTML fetchColumn()— récupérer une seule valeur (ex: COUNT)