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_ASSOCretourne 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éthode | Description |
|---|---|
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()).