PDOStatement::fetchAll -- Întoarce o matrice care conţine ca rezultat setul de rânduri
Descriere
array PDOStatement::fetchAll ( [int fetch_style [, int column_index]] )
Parametri
fetch_style
Controlează conţinutul matricii întoarse descrise în PDOStatement::fetch(). Implicit, PDO::FETCH_BOTH.
Pentru a întoarce o matrice care conţine toate valorile unei singure coloane din setul de rezultate, se specifică PDO::FETCH_COLUMN. Coloana se poate specifica cu parametrul column-index.
Pentru a prelua doar valorile unice ale unei singure coloane din setul de rezultate, bitwise-OR PDO::FETCH_COLUMN cu PDO::FETCH_UNIQUE.
Pentru a întoarce o matrice asociativă grupată după valorile unei anumite coloane, bitwise-OR PDO::FETCH_COLUMN cu PDO::FETCH_GROUP.
column_index
Întoarce coloana indicată, indexată de la 0 când valoarea fetch_style este PDO::FETCH_COLUMN. Implicit 0.
Valori întoarse
PDOStatement::fetchAll() întoarce o matrice care conţine toate rândurile care au rămas în setul de rezultate. Matricea reprezintă fiecare rând, fie ca o serie de valori de coloane, sau un obiect cu proprietăţi corespunzătoare pentru fiecare nume de coloană.
Folosind această metodă pentru a prelua seturi mari de rezultate va duce la o cerere mare a datelor şi multe resurse în reţea. În loc ca datele să fie extrase, apoi manipulate în PHP, se poate alege ca serverul bazei de date să manipuleze setul de rezultate. De exemplu, se pot folosi clauzele WHERE şi SORT BY în SQL pentru a limita rezultatele înainte de a le extrage şi procesa cu PHP.
Exemple
1. Preluarea rândurilor rămase într-un set de rezultate
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Preia toate randurile ramase in setul de rezultate */
print("Preia toate randurile ramase in setul de rezultate:\n");
$result = $sth->fetchAll();
print_r($result);
?>
Exemplul de mai sus va afişa:
Preia toate randurile ramase in setul de rezultate:
Array
(
[0] => Array
(
[NAME] => pear
[0] => pear
[COLOUR] => green
[1] => green
)
[1] => Array
(
[NAME] => watermelon
[0] => watermelon
[COLOUR] => pink
[1] => pink
)
)
2. Preluarea tuturor valorilor unei singure coloane dintr-un set de rezultate
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Preia toate valorile primei coloane */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>
Exemplul de mai sus va afişa:
Array(3)
(
[0] =>
string(5) => apple
[1] =>
string(4) => pear
[2] =>
string(10) => watermelon
)
3. Gruparea tuturor valorilor după o singură coloană
Următorul exemplu demonstrează cum se poate întoarce o matrice asociativă grupată după valorile coloanei specificate în setul de rezultate. Matricea conţine trei chei: valorile apple şi pear sunt întoarse ca serii care conţin două culori diferite, în timp ce watermelon este întors ca serie care conţine doar o culoare.
<?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();
/* Grupeaza valorile dupa prima coloana */
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
?>
Exemplul de mai sus va afişa:
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"
}
}