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 simple
  • fetchAll(PDO::FETCH_ASSOC) — récupérer tous les résultats en tableau associatif
  • fetch() — 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)