(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)
PDOStatement::nextRowset — Rückt in einem Anweisungshandle mit mehreren Sätzen von Zeilen (Rowsets) zum nächsten vor
Einige Datenbankserver unterstützen gespeicherte Prozeduren, die mehr als einen Satz von Zeilen (sog. Rowsets, auch Ergebnismenge genannt) zurückgeben. PDOStatement::nextRowset() ermöglicht den Zugriff auf den zweiten und die folgenden Sätze von Zeilen, die zu einem PDOStatement-Objekt gehören. Jeder Zeilensatz kann einen anderen Satz von Spalten haben als der vorhergehende Zeilensatz.
Diese Funktion besitzt keine Parameter.
Beispiel #1 Abrufen mehrerer von einer gespeicherten Prozedur zurückgegebener Zeilensätze
Das folgende Beispiel zeigt, wie man eine gespeicherte Prozedur, MULTIPLE_ROWSETS
, aufruft, die drei Zeilensätze zurückgibt. Mit einer do-while-Schleife wird die Methode PDOStatement::nextRowset() so oft aufgerufen, bis sie false
zurückgibt, und die Schleife beendet, wenn es keine weiteren Zeilensätze mehr gibt.
<?php
$sql = 'CALL multiple_rowsets()';
$stmt = $conn->query($sql);
$i = 1;
do {
$rowset = $stmt->fetchAll(PDO::FETCH_NUM);
if ($rowset) {
printResultSet($rowset, $i);
}
$i++;
} while ($stmt->nextRowset());
function printResultSet(&$rowset, $i) {
print "Ergebnismenge $i:\n";
foreach ($rowset as $row) {
foreach ($row as $col) {
print $col . "\t";
}
print "\n";
}
print "\n";
}
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Ergebnismenge 1: apple red banana yellow Ergebnismenge 2: orange orange 150 banana yellow 175 Ergebnismenge 3: lime green apple red banana yellow