PDOStatement::fetchAll

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::fetchAllRuft die verbleibenden Zeilen aus einer Ergebnismenge ab

Beschreibung

publicPDOStatement::fetchAll(int$mode = PDO::FETCH_DEFAULT): array
publicPDOStatement::fetchAll(int$mode = PDO::FETCH_COLUMN, int$column): array
publicPDOStatement::fetchAll(int$mode = PDO::FETCH_CLASS, string$class, ?array$constructorArgs): array
publicPDOStatement::fetchAll(int$mode = PDO::FETCH_FUNC, callable$callback): array

Parameter-Liste

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.

Bei den folgenden Parametern handelt es sich um dynamische Parameter, die vom Abrufmodus abhängig sind. Sie können nicht in Verbindung mit benannten Parametern verwendet 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.

Rückgabewerte

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.

Fehler/Exceptions

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.

Changelog

VersionBeschreibung
8.0.0 Diese Methode gibt nun immer ein Array zurück, während zuvor bei einem Fehler möglicherweise false zurückgegeben wurde.

Beispiele

Beispiel #1 Abrufen der restlichen Zeilen einer Ergebnismenge

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


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();


$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();


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" }

Siehe auch

To Top