PDOStatement::fetchAll — Renvoie un tableau contenant toutes les lignes du jeu de résultats (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
array PDOStatement::fetchAll ([ int $fetch_style [, mixte $fetch_argument [, array $ctor_args = array() ]]] )
fetch_style
Contrôle la manière dont la ligne suivante est renvoyée à l'appelant. Cette valeur doit faire partie de la série de constantes PDO::FETCH_* et la valeur par défaut est la valeur de PDO::ATTR_DEFAULT_FETCH_MODE (la valeur par défaut est PDO::FETCH_BOTH).
Pour renvoyer un tableau contenant toutes les valeurs d'une seule colonne dans le jeu de résultats, spécifiez PDO::FETCH_COLUMN. Obtenez la colonne souhaitée en spécifiant le paramètre column-index.
Pour obtenir la valeur unique d'une seule colonne dans le jeu de résultats, vous devez effectuer un OU au niveau du bit PDO::FETCH_COLUMN et PDO::FETCH_UNIQUE.
Pour renvoyer un tableau associatif avec des valeurs regroupées selon la colonne spécifiée, vous devez OR au niveau du bit PDO::FETCH_COLUMN et PDO::FETCH_GROUP.
fetch_argumentCe paramètre a différentes significations selon la valeur du paramètre fetch_style :
PDO::FETCH_COLUMN
: Renvoie la colonne spécifiée indexée à partir de 0.
PDO::FETCH_CLASS
: renvoie une instance de la classe spécifiée, mappant les colonnes de chaque ligne au nom d'attribut correspondant dans la classe.
PDO::FETCH_FUNC
: Passe les colonnes de chaque ligne en tant que paramètres à la fonction spécifiée et renvoie le résultat après avoir appelé la fonction.
ctor_args Lorsque le paramètre fetch_style est PDO::FETCH_CLASS, les paramètres du constructeur de la classe personnalisée.
PDOStatement::fetchAll() renvoie un tableau contenant toutes les lignes restantes du jeu de résultats. Chaque ligne de ce tableau est soit un tableau de valeurs de colonnes, soit un objet avec des propriétés correspondant à chaque nom de colonne.
L’utilisation de cette méthode pour obtenir de grands ensembles de résultats imposera une lourde charge au système et peut consommer des ressources réseau importantes. Plutôt que de récupérer toutes les données puis de les exploiter avec PHP, envisagez d'utiliser un service de base de données pour traiter l'ensemble de résultats. Par exemple, utilisez les clauses WHERE et ORDER BY dans SQL pour qualifier les résultats avant de récupérer les données et de les traiter via PHP.
<?php$sth = $dbh->prepare("SELECT name, color FROM fruit");$sth->execute();/* Récupère toutes les lignes restantes dans le jeu de résultats*/print("Récupérer tous les lignes restantes dans le jeu de résultats :n");$result = $sth->fetchAll();print_r($result);?>
Le résultat de l'exemple ci-dessus est :
Récupère toutes les lignes restantes du jeu de résultats :Array( [0] => Array ( [NAME] => pear [0] => pear [COLOUR] => green [1] => green ) [1] => Tableau ( [NOM] => pastèque [0] => pastèque [COLOUR] => rose [1] => rose ))
L'exemple suivant montre comment renvoyer toutes les valeurs d'une seule colonne à partir d'un jeu de résultats, bien que l'instruction SQL elle-même puisse renvoyer plusieurs colonnes par ligne.
<?php$sth = $dbh->prepare("SELECT name, color FROM fruit");$sth->execute();/* Récupère toutes les valeurs de la première colonne*/$result = $sth-> fetchAll(PDO ::FETCH_COLUMN, 0);var_dump($result);?>
Le résultat de l'exemple ci-dessus est :
Array(3)( [0] => string(5) => pomme [1] => string(4) => poire [2] => string(10) => pastèque)
L'exemple suivant montre comment renvoyer un tableau associatif regroupé par les valeurs d'une colonne spécifiée dans le jeu de résultats. Le tableau contient trois clés : les tableaux pomme et poire renvoyés contiennent deux couleurs différentes, tandis que le tableau pastèque renvoyé ne contient qu'une seule couleur.
<?php$insert = $dbh->prepare("INSERT INTO fruit(name, color) VALUES (?, ?)");$insert->execute(array('apple', 'green'));$insert ->execute(array('pear', 'jaune'));$sth = $dbh->prepare("SELECT nom, couleur FROM fruit");$sth->execute();/* Groupe basé sur la première colonne*/var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));?>
Le résultat de l'exemple ci-dessus est :
array(3) { ["pomme"]=> array(2) { [0]=> string(5) "vert" [1]=> string(3) "rouge" } ["poire"]=> tableau (2) { [0]=> string(5) "vert" [1]=> string(6) "jaune" } ["pastèque"]=> array(1) { [0]=> string(5) "vert" }}
L'exemple suivant illustre le comportement du style d'acquisition PDO::FETCH_CLASS.
<?phpclass fruit { public $name; public $colour;}$sth = $dbh->prepare("SELECT nom, couleur FROM fruit");$sth->execute();$result = $sth->fetchAll( PDO::FETCH_CLASS, "fruit");var_dump($result);?>
Le résultat de l'exemple ci-dessus est :
array(3) { [0]=> object(fruit)#1 (2) { ["name"]=> string(5) "pomme" ["couleur"]=> string(5) "vert" } [ 1]=> object(fruit)#2 (2) { ["name"]=> string(4) "poire" ["colour"]=> string(6) "jaune" } [2]=> object( fruit)#3 (2) { ["name"]=> string(10) "pastèque" ["colour"]=> string(4) "rose" }}
L’exemple suivant illustre le comportement du style d’obtention PDO::FETCH_FUNC.
<?phpfunction fruit($name, $colour) { return "{$name}: {$colour}";}$sth = $dbh->prepare("SELECT nom, couleur FROM fruit");$sth->execute ();$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");var_dump($result);?>
Le résultat de l'exemple ci-dessus est :
array(3) { [0]=> string(12) "pomme : vert" [1]=> string(12) "poire : jaune" [2]=> string(16) "pastèque : rose"}