(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::fetchAll — Ruft die verbleibenden Zeilen aus einer Ergebnismenge ab
mode
Legt die Struktur des zurückgegebenen Arrays fest, wie in
PDOStatement::fetch() dokumentiert.
Voreingestellt ist PDO::ATTR_DEFAULT_FETCH_MODE
(das standardmäßig auf PDO::FETCH_BOTH
gesetzt
ist).
Damit ein Array zurückgegeben wird, das aus allen Werten einer
einzelnen Spalte der Ergebnismenge besteht, muss
PDO::FETCH_COLUMN
angegeben werden. Die gewünschte
Spalte kann mit dem Parameter column
angegeben
werden.
Um nur die eindeutigen Werte einer einzelnen Spalte aus der
Ergebnismenge zu abzurufen, müssen
PDO::FETCH_COLUMN
und
PDO::FETCH_UNIQUE
mittels bitweisem OR verknüpft
werden.
Damit ein Array zurückgegeben wird, das nach den Werten einer
bestimmten Spalte gruppiert ist, müssen
PDO::FETCH_COLUMN
und
PDO::FETCH_GROUP
mittels bitweisem OR verknüpft
werden.
column
Wird zusammen mit PDO::FETCH_COLUMN
verwendet.
Gibt die angegebene Spalte zurück (der Index beginnt bei 0).
class
Wird zusammen mit PDO::FETCH_CLASS
verwendet. Gibt
Instanzen der angegebenen Klasse zurück, wobei die Spalten jeder Zeile
auf benannte Eigenschaften der Klasse abgebildet werden.
constructorArgs
Argumente des benutzerdefinierten Klassenkonstruktors, wenn der
Parameter mode
auf
PDO::FETCH_CLASS
gesetzt ist.
callback
Wird zusammen mit PDO::FETCH_FUNC
verwendet. Gibt
die Ergebnisse des angegebenen Funktionsaufrufs zurück, wobei die
Spalten jeder Zeile als Parameter für den Aufruf verwendet werden.
PDOStatement::fetchAll() gibt ein Array zurück, das die restlichen Zeilen der Ergebnismenge enthält. Das Array enthält jede Zeile entweder als Array von Spaltenwerten oder als Objekt mit Eigenschaften, die den einzelnen Spaltennamen entsprechen. Wenn es keine Ergebnisse gibt, die abgerufen werden können, wird ein leeres Array zurückgegeben.
Wenn diese Methode verwendet wird, um große Ergebnismengen abzurufen, kann dies zu einer hohen Beanspruchung der System- und Netzwerkressourcen führen. Anstatt alle Daten abzurufen und in PHP zu bearbeiten, sollte in Betracht gezogen werden, den Datenbankserver für die Bearbeitung der Ergebnismengen zu verwenden. Zum Beispiel könnten WHERE- und ORDER BY-Klauseln in SQL verwendet werden, um die Ergebnismenge einzuschränken, bevor sie mit PHP abgerufen und verarbeitet wird.
Gibt einen Fehler der Stufe E_WARNING
aus, wenn das Attribut PDO::ATTR_ERRMODE
auf PDO::ERRMODE_WARNING
gesetzt ist.
Löst eine PDOException aus, wenn das Attribut PDO::ATTR_ERRMODE
auf PDO::ERRMODE_EXCEPTION
gesetzt ist.
Version | Beschreibung |
---|---|
8.0.0 |
Diese Methode gibt nun immer ein Array zurück, während zuvor bei
einem Fehler möglicherweise false zurückgegeben wurde.
|
Beispiel #1 Abrufen der restlichen Zeilen einer Ergebnismenge
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Abrufen der restlichen Zeilen der Ergebnismenge */
print "Abrufen der restlichen Zeilen der Ergebnismenge:\n";
$result = $sth->fetchAll();
print_r($result);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Abrufen der restlichen Zeilen der Ergebnismenge: Array ( [0] => Array ( [name] => apple [0] => apple [colour] => red [1] => red ) [1] => Array ( [name] => pear [0] => pear [colour] => green [1] => green ) [2] => Array ( [name] => watermelon [0] => watermelon [colour] => pink [1] => pink ) )
Beispiel #2 Abrufen aller Werte einer einzelnen Spalte einer Ergebnismenge
Das folgende Beispiel zeigt, wie alle Werte einer einzelnen Spalte aus einer Ergebnismenge abgerufen werden können, auch wenn die SQL-Anweisung selbst mehrere Spalten pro Zeile zurückgibt.
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Abrufen aller Werte der ersten Spalte */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Array(3) ( [0] => string(5) => apple [1] => string(4) => pear [2] => string(10) => watermelon )
Beispiel #3 Gruppieren aller Werte nach einer einzelnen Spalte
Das folgende Beispiel zeigt, wie ein assoziatives Array abgerufen werden
kann, das nach den Werten der angegebenen Spalte in der Ergebnismenge
gruppiert ist. Das Array enthält drei Schlüssel: Die Werte
apple
und pear
werden als Arrays
zurückgegeben, die zwei verschiedene Farben enthalten, während
watermelon
als Array zurückgegeben wird, das nur eine
Farbe enthält.
<?php
$insert = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)");
$insert->execute(array('apple', 'green'));
$insert->execute(array('pear', 'yellow'));
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Gruppieren der Werte nach der ersten Spalte */
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
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) "pink" } }
Beispiel #4 Instanziieren einer Klasse für jedes Ergebnis
Das folgende Beispiel zeigt das Verhalten im Modus
PDO::FETCH_CLASS
.
<?php
class fruit {
public $name;
public $colour;
}
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
array(3) { [0]=> object(fruit)#1 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(5) "green" } [1]=> object(fruit)#2 (2) { ["name"]=> string(4) "pear" ["colour"]=> string(6) "yellow" } [2]=> object(fruit)#3 (2) { ["name"]=> string(10) "watermelon" ["colour"]=> string(4) "pink" } [3]=> object(fruit)#4 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(3) "red" } [4]=> object(fruit)#5 (2) { ["name"]=> string(4) "pear" ["colour"]=> string(5) "green" } }
Beispiel #5 Aufrufen einer Funktion für jedes Ergebnis
Das folgende Beispiel zeigt das Verhalten im Modus
PDO::FETCH_FUNC
.
<?php
function fruit($name, $colour) {
return "{$name}: {$colour}";
}
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
var_dump($result);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
array(3) { [0]=> string(12) "apple: green" [1]=> string(12) "pear: yellow" [2]=> string(16) "watermelon: pink" [3]=> string(10) "apple: red" [4]=> string(11) "pear: green" }