Skip to content

Lecture des résultats avec PDO

Objectifs pédagogiques

  • Récupérer les données issues d’une requête SELECT.
  • Comprendre les différentes méthodes de lecture : fetch, fetchAll, fetchColumn.
  • Manipuler les résultats avec des boucles.

Utilisation de fetchAll

La méthode fetchAll() permet de récupérer toutes les lignes sous forme de tableau :

php
<?php
$pdo = new PDO('mysql:host=localhost;dbname=todo', 'root', '');

$stmt = $pdo->query("SELECT * FROM tasks");
$tasks = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($tasks as $task) {
    echo $task['label'] . '<br>';
}
  • PDO::FETCH_ASSOC retourne chaque ligne sous forme de tableau associatif.
  • fetchAll() lit tous les résultats en une seule fois.

Utilisation de fetch

La méthode fetch() lit les résultats ligne par ligne, utile dans les grandes tables :

php
<?php
$stmt = $pdo->query("SELECT * FROM tasks");

while ($task = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $task['label'] . '<br>';
}
  • Plus économique en mémoire.
  • Idéal quand le résultat contient un grand nombre de lignes.

Utilisation de fetchColumn

Récupère la première colonne du premier résultat (utile pour un seul champ) :

php
<?php
$stmt = $pdo->query("SELECT COUNT(*) FROM tasks");
$count = $stmt->fetchColumn();

echo "Nombre de tâches : " . $count;

Méthodes disponibles

MéthodeDescription
fetch()Une ligne à la fois
fetchAll()Toutes les lignes en une seule fois
fetchColumn()Une valeur unique (première colonne)

Bonnes pratiques

  • Toujours préciser le mode de lecture (PDO::FETCH_ASSOC, PDO::FETCH_OBJ, etc.).
  • fetch() est à privilégier si la volumétrie est importante.
  • Ne jamais utiliser les résultats sans les échapper (htmlspecialchars()).