PDOStatement::fetchAll – Gibt ein Array zurück, das alle Zeilen im Ergebnissatz enthält (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
array PDOStatement::fetchAll ([ int $fetch_style [, gemischt $fetch_argument [, array $ctor_args = array() ]]] )
fetch_style
Steuert, wie die nächste Zeile an den Anrufer zurückgegeben wird. Dieser Wert muss eine der Konstantenreihen PDO::FETCH_* sein und der Standardwert ist der Wert von PDO::ATTR_DEFAULT_FETCH_MODE (der Standardwert ist PDO::FETCH_BOTH).
Um ein Array zurückzugeben, das alle Werte einer einzelnen Spalte im Ergebnissatz enthält, geben Sie PDO::FETCH_COLUMN an. Rufen Sie die gewünschte Spalte ab, indem Sie den Parameter „column-index“ angeben.
Um den eindeutigen Wert einer einzelnen Spalte im Ergebnissatz zu erhalten, müssen Sie PDO::FETCH_COLUMN und PDO::FETCH_UNIQUE bitweise ODER verwenden.
Um ein assoziatives Array mit nach der angegebenen Spalte gruppierten Werten zurückzugeben, müssen Sie PDO::FETCH_COLUMN und PDO::FETCH_GROUP bitweise ODER verwenden.
fetch_argumentDieser Parameter hat je nach Wert des fetch_style-Parameters unterschiedliche Bedeutungen:
PDO::FETCH_COLUMN
: Gibt die angegebene Spalte zurück, indiziert beginnend bei 0.
PDO::FETCH_CLASS
: Gibt eine Instanz der angegebenen Klasse zurück und ordnet die Spalten jeder Zeile dem entsprechenden Attributnamen in der Klasse zu.
PDO::FETCH_FUNC
: Übergeben Sie die Spalten jeder Zeile als Parameter an die angegebene Funktion und geben Sie das Ergebnis nach dem Aufruf der Funktion zurück.
ctor_args Wenn der fetch_style-Parameter PDO::FETCH_CLASS ist, die Parameter des Konstruktors der benutzerdefinierten Klasse.
PDOStatement::fetchAll() gibt ein Array zurück, das alle verbleibenden Zeilen im Ergebnissatz enthält. Jede Zeile dieses Arrays ist entweder ein Array von Spaltenwerten oder ein Objekt mit Eigenschaften, die jedem Spaltennamen entsprechen.
Die Verwendung dieser Methode zum Erhalten großer Ergebnismengen stellt eine starke Belastung für das System dar und kann erhebliche Netzwerkressourcen verbrauchen. Anstatt alle Daten abzurufen und sie dann mit PHP zu verarbeiten, sollten Sie die Verwendung eines Datenbankdienstes zur Verarbeitung der Ergebnismenge in Betracht ziehen. Verwenden Sie beispielsweise WHERE- und ORDER BY-Klauseln in SQL, um die Ergebnisse zu qualifizieren, bevor Sie die Daten abrufen und über PHP verarbeiten.
<?php$sth = $dbh->prepare("NAME, Farbe AUS Frucht AUSWÄHLEN");$sth->execute();/* Alle verbleibenden Zeilen im Ergebnissatz abrufen*/print("Alle verbleibenden Zeilen abrufen verbleibende Zeilen im Ergebnissatz:n");$result = $sth->fetchAll();print_r($result);?>
Die Ausgabe des obigen Beispiels ist:
Rufen Sie alle verbleibenden Zeilen in der Ergebnismenge ab:Array( [0] => Array ( [NAME] => Birne [0] => Birne [FARBE] => Grün [1] => Grün) [1] => Array ( [NAME] => Wassermelone [0] => Wassermelone [FARBE] => Rosa [1] => Rosa))
Das folgende Beispiel zeigt, wie alle Werte einer einzelnen Spalte aus einer Ergebnismenge zurückgegeben werden, obwohl die SQL-Anweisung selbst möglicherweise mehrere Spalten pro Zeile zurückgibt.
<?php$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->execute();/* Alle Werte in der ersten Spalte abrufen*/$result = $sth-> fetchAll(PDO ::FETCH_COLUMN, 0);var_dump($result);?>
Die Ausgabe des obigen Beispiels ist:
Array(3)( [0] => string(5) => Apfel [1] => string(4) => Birne [2] => string(10) => Wassermelone)
Das folgende Beispiel zeigt, wie ein assoziatives Array zurückgegeben wird, das nach den Werten einer angegebenen Spalte im Ergebnissatz gruppiert ist. Das Array enthält drei Schlüssel: Die zurückgegebenen Apfel- und Birnen-Arrays enthalten zwei verschiedene Farben, während das zurückgegebene Wassermelonen-Array 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, color FROM Fruit");$sth->execute();/* Gruppe basierend auf der ersten Spalte*/var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));?>
Die Ausgabe des obigen Beispiels ist:
array(3) { ["apple"]=> array(2) { [0]=> string(5) "green" [1]=> string(3) "red" } ["pear"]=> array (2) { [0]=> string(5) „grün“ [1]=> string(6) „gelb“ } [„Wassermelone“]=> array(1) { [0]=> string(5) "Grün" }}
Das folgende Beispiel zeigt das Verhalten des PDO::FETCH_CLASS-Erfassungsstils.
<?phpclass Fruit { public $name; public $colour;}$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->execute();$result = $sth->fetchAll( PDO::FETCH_CLASS, "fruit");var_dump($result);?>
Die Ausgabe des obigen Beispiels ist:
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( Obst)#3 (2) { ["name"]=> string(10) "watermelon" ["color"]=> string(4) "pink" }}
Das folgende Beispiel zeigt das Verhalten des PDO::FETCH_FUNC-Get-Stils.
<?phpfunction Fruit($name, $colour) { return "{$name}: {$colour}";}$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->execute ();$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");var_dump($result);?>
Die Ausgabe des obigen Beispiels ist:
array(3) { [0]=> string(12) „Apfel: grün“ [1]=> string(12) „Birne: gelb“ [2]=> string(16) „Wassermelone: rosa“}