Signatur
Beschreibung
cubrid_next_result() wird verwendet, wenn mehrere SQL-Anweisungen in einem einzigen Aufruf (z. B. über cubrid_execute()) ausgeführt wurden und man die Ergebnismengen der nachfolgenden Abfragen abrufen möchte. Die Funktion verschiebt den internen Zeiger auf das Ergebnis der nächsten Abfrage innerhalb der zurückgelieferten Ergebnisressource.
Typischerweise liefert die erste Abfrage ihr Ergebnis direkt über die zurückgegebene Ressource. Für jede weitere Abfrage im Batch muss cubrid_next_result() aufgerufen werden, bevor die entsprechenden Zeilendaten mit Funktionen wie cubrid_fetch_assoc() oder cubrid_fetch_row() ausgelesen werden können.
Diese Funktion ist nützlich, wenn mehrere SELECT-Statements kombiniert werden, um beispielsweise verschiedene Datenbereiche in einer einzigen Datenbankverbindung abzufragen und die Anzahl der Roundtrips zur Datenbank zu minimieren.
Gibt die Funktion false zurück, bedeutet dies, dass keine weiteren Ergebnismengen mehr vorhanden sind oder ein Fehler aufgetreten ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Die Ergebnisressource, die von cubrid_execute() zurückgegeben wurde und mehrere SQL-Abfrageergebnisse enthält. |
Rückgabewert
true zurück, wenn erfolgreich zum nächsten Abfrageergebnis gewechselt wurde. Gibt false zurück, wenn keine weiteren Ergebnisse vorhanden sind oder ein Fehler aufgetreten ist.Beispiele
Mehrere SQL-Statements mit cubrid_next_result verarbeiten
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
// Zwei SELECT-Statements in einem Aufruf
$sql = "SELECT * FROM member LIMIT 3; SELECT * FROM orders LIMIT 3;";
$result = cubrid_execute($conn, $sql, CUBRID_EXEC_QUERY_ALL);
if ($result) {
// Erstes Ergebnis verarbeiten
echo "=== Mitglieder ===" . PHP_EOL;
while ($row = cubrid_fetch_assoc($result)) {
echo $row['id'] . ': ' . $row['name'] . PHP_EOL;
}
// Zum nächsten Ergebnis wechseln
if (cubrid_next_result($result)) {
echo "=== Bestellungen ===" . PHP_EOL;
while ($row = cubrid_fetch_assoc($result)) {
echo $row['order_id'] . ': ' . $row['product'] . PHP_EOL;
}
} else {
echo "Keine weiteren Ergebnisse vorhanden." . PHP_EOL;
}
cubrid_close_request($result);
}
cubrid_disconnect($conn);
?>
Alle Ergebnismengen in einer Schleife durchlaufen
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$sql = "SELECT id, name FROM member LIMIT 2;
SELECT order_id, product FROM orders LIMIT 2;
SELECT category_id, title FROM categories LIMIT 2;";
$result = cubrid_execute($conn, $sql, CUBRID_EXEC_QUERY_ALL);
if ($result) {
$queryIndex = 1;
do {
echo "--- Abfrage $queryIndex ---" . PHP_EOL;
while ($row = cubrid_fetch_row($result)) {
echo implode(', ', $row) . PHP_EOL;
}
$queryIndex++;
} while (cubrid_next_result($result));
cubrid_close_request($result);
}
cubrid_disconnect($conn);
?>
// Wichtig · Fallstricke
Wichtig: Damit mehrere SQL-Statements in einem einzigen Aufruf ausgeführt werden können, muss cubrid_execute() mit dem Flag CUBRID_EXEC_QUERY_ALL aufgerufen werden. Ohne dieses Flag wird nur das erste Statement ausgeführt.
Die Funktion steht ausschließlich für die CUBRID-Datenbankextension zur Verfügung und ist nicht mit anderen Datenbankschnittstellen wie mysqli oder PDO kompatibel.
Es empfiehlt sich, nach dem Verarbeiten aller Ergebnismengen die Ressource mit cubrid_close_request() zu schließen, um Ressourcen freizugeben.