Forum und email

PDOStatement->fetchAll()

(PHP 5 >= 5.1.0, PECL pdo:0.1-1.0.3)

PDOStatement->fetchAll() — Retourne un tableau contenant toutes les lignes du jeu d'enregistrements

Description

PDOStatement
array fetchAll ([ int $fetch_style [, int $column_index ]] )

Liste de paramètres

fetch_style

Contrôle le contenu du tableau retourné comme documenté dans la fonction PDOStatement->fetch(). Vaut par défaut PDO::FETCH_BOTH.

Pour retourner un tableau contenant toutes les valeurs d'une seule colonne depuis le jeu de résultats, spécifiez PDO::FETCH_COLUMN. Vous pouvez spécifier quelle colonne vous voulez avec le paramètre column-index .

Pour récupérer uniquement les valeurs uniques d'une seule colonne depuis le jeu de résultats, utilisez PDO::FETCH_COLUMN avec PDO::FETCH_UNIQUE.

Pour retourner un tableau associatif groupé par les valeurs d'une colonne spécifique, utilisez PDO::FETCH_COLUMN avec PDO::FETCH_GROUP.

column_index

Retourne la colonne indiquée où la valeur de fetch_style est PDO::FETCH_COLUMN. Vaut par défaut 0.

Valeurs de retour

PDOStatement->fetchAll() retourne un tableau contenant toutes les lignes du jeu d'enregistrements. Le tableau représente chaque ligne comme soit un tableau de valeurs des colonnes, soit un objet avec des propriétés correspondant à chaque nom de colonne.

L'utilisation de cette méthode pour récupérer de gros jeux de résultats peut augmenter les ressources du systèmes mais également ces ressources. Plutôt que de récupérer toutes les données et de les manipuler avec PHP, utilisez le serveur de base de données pour manipuler les jeux de résultats. Par exemple, utilisez les clauses WHERE et ORDER BY dans vos requêtes SQL pour restreindre les résultats avant de le récupérer et de les traiter avec PHP.

Exemples

Example#1 Récupération de toutes les lignes d'un jeu de résultats

<?php
$sth 
$dbh->prepare("SELECT nom, couleur FROM fruit");
$sth->execute();

/* Récupération de toutes les lignes d'un jeu de résultats */
print("Récupération de toutes les lignes d'un jeu de résultats :\n");
$result $sth->fetchAll();
print_r($result);
?>

L'exemple ci-dessus va afficher :

Récupération de toutes les lignes d'un jeu de résultats :
Array
(
    [0] => Array
        (
            [NOM] => pear
            [0] => pear
            [COULEUR] => green
            [1] => green
        )

    [1] => Array
        (
            [NOM] => watermelon
            [0] => watermelon
            [COULEUR] => pink
            [1] => pink
        )

)

Example#2 Récupération de toutes les valeurs d'une seule colonne depuis un jeu de résultats

L'exemple suivant montre comment retourner toutes les valeurs d'une seule colonne depuis un jeu de résultats, même si la requête SQL retourne plusieurs colonnes par lignes.

<?php
$sth 
$dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Récupération de toutes les valeurs de la première colonne */
$result $sth->fetchAll(PDO::FETCH_COLUMN0);
var_dump($result);
?>

L'exemple ci-dessus va afficher :

Array(3)
(
    [0] =>
    string(5) => apple
    [1] =>
    string(4) => pear
    [2] =>
    string(10) => watermelon
)

Example#3 Grouper toutes les valeurs d'une seule colonne

L'exemple suivant montre comment retourner un tableau associatif groupé par les valeurs de la colonne spécifiée d'un jeu de résultats. Le tableau contient trois clés : les valeurs apple et pear sont retournées sous la forme de tableaux qui contiennent deux couleurs différentes, tandis que watermelon est retourné sous la forme d'un tableau qui contient uniquement une seule couleur.

<?php
$insert 
$dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)");
$insert->execute('apple''green');
$insert->execute('pear''yellow');

$sth $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Grouper les valeurs de la première colonne */
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
?>

L'exemple ci-dessus va afficher :

array(3) {
  ["apple"]=>
    array(2) {
      [0]=>
        string(5) "green"
      [1]=>
        string(3) "red"
    }
  ["pear"]=>
    array(2) {
      [0]=>
        string(5) "green"
      [1]=>
        string(6) "yellow"
    }
  ["watermelon"]=>
    array(1) {
      [0]=>
        string(5) "green"
    }
}