In PHP ist die Funktion Next_Result () eine Funktion, die von der MySQLI -Erweiterungsbibliothek bereitgestellt wird, um mehrere Abfrageergebnis -Sets zu verarbeiten. Wenn mehrere Abfragen ausgeführt werden, wird diese Funktion verwendet, um nachfolgende Ergebnissätze zu erhalten, um ein unerwartetes Verhalten zu vermeiden, wenn mehrere Abfragen ausgeführt werden.
Die NEXT_RESULT () -Funktion ist Teil von MySQLI und wurde speziell so konzipiert, dass sie bei der Ausführung mehrerer SQL -Abfragen alle Ergebnissätze korrekt durchquert. Sein Zweck ist es, das nächste Ergebnissatz zu erhalten, bis keine mehr Ergebnissätze verfügbar sind.
Um die Verwendung von Next_Result () besser zu verstehen, benötigen wir zunächst ein Beispiel, das mehrere Abfragen enthält. Angenommen, wir verarbeiten eine MySQL -Anforderung, die mehrere SQL -Abfragen enthält. Wir können die Methode multi_query () verwenden, um mehrere Abfragen gleichzeitig auszuführen und Next_Result () zu verwenden, um alle Ergebnisse einzeln zu erhalten.
<?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "user", "password", "database");
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Mehrere Abfragestatements
$sql = "SELECT * FROM users; SELECT * FROM orders; SELECT * FROM products;";
// Führen Sie mehrere Fragen aus
if ($mysqli->multi_query($sql)) {
// Holen Sie sich das erste Ergebnissatz
if ($result = $mysqli->store_result()) {
echo "Users Table Results:<br>";
while ($row = $result->fetch_assoc()) {
echo "User: " . $row["username"] . "<br>";
}
$result->free();
}
// Holen Sie sich das nächste Ergebnissatz
while ($mysqli->next_result()) {
if ($result = $mysqli->store_result()) {
// Verarbeiten Sie die Ergebnisse jeder Abfrage
echo "<br>Next Result:<br>";
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
}
$result->free();
}
}
}
// Schließen Sie die Datenbankverbindung
$mysqli->close();
?>
Im obigen Code führen wir zuerst drei SQL -Abfragen über Multi_query () aus. Verwenden Sie dann Next_Result () , um die in Sequenz eingestellte Ergebnisse durchzuführen. Auf diese Weise können wir mehrere Abfragenergebnisse in derselben Datenbankverbindung verarbeiten, ohne jede Abfrage erneut auszuführen.
Anrufauftrag : Jedes Mal, wenn Next_Result () aufgerufen wird, wechselt MySQLI automatisch zum nächsten Ergebnissatz. Wenn es keine Ergebnisse mehr gibt, gibt die Funktion false zurück.
Freie Ressourcen : Denken Sie nach der erhaltenen Erfassung und Verarbeitung jedes Ergebnissatzes daran, die Methode Free () zu verwenden, um die Abfrageergebnisse freizusetzen, um Speicherleckage zu vermeiden.
Fehlerbehandlung : Obwohl die Methode multi_query () bei der Ausführung mehrerer Abfragen auf Fehler stoßen kann, wird Next_result () erst nach vollständiger Verarbeitung der vorherigen Abfrage verarbeitet. Vergewissern Sie sich daher, dass Fehler für jede Abfrage verarbeitet und zu gegebener Zeit eine Ausnahmebehandlung durchführen.
Leistungsüberlegungen : Die Verwendung mehrerer Abfragen verarbeitet mehrere Abfragen auf der Datenbankseite. Auf der Anwendungsschicht müssen wir jedoch die Ergebnisse jeder Abfrage nacheinander lesen und verarbeiten. Stellen Sie daher sicher, dass die Struktur und das Datenvolumen der Abfrage moderat sind, um die Leistung zu vermeiden.
In der tatsächlichen Entwicklung werden mehrere Abfragen verwendet und die Ergebnisse jeder Abfrage werden nacheinander verarbeitet. Gemeinsame Anwendungsszenarien umfassen das Lesen von Daten aus verschiedenen Tabellen und das Anzeigen auf der Seite. Hier ist ein einfaches Beispiel, das zeigt, wie Daten aus mehreren Tabellen kombiniert werden.
<?php
// Angenommen, dies ist ein Benutzerverwaltungssystem,Fragen Sie zuerst die Benutzertabelle ab,Überprüfen Sie die Bestellentabelle erneut,Und Produktinformationen erhalten
$sql = "SELECT id, username FROM users; SELECT id, order_name FROM orders; SELECT id, product_name FROM products;";
// Eine Frage ausführen
if ($mysqli->multi_query($sql)) {
// Nutzungsdaten abrufen
if ($result = $mysqli->store_result()) {
echo "Users:<br>";
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"] . " - Username: " . $row["username"] . "<br>";
}
$result->free();
}
// Bestelldaten abrufen
while ($mysqli->next_result()) {
if ($result = $mysqli->store_result()) {
echo "<br>Orders:<br>";
while ($row = $result->fetch_assoc()) {
echo "Order ID: " . $row["id"] . " - Order Name: " . $row["order_name"] . "<br>";
}
$result->free();
}
}
// Produktdaten erhalten
while ($mysqli->next_result()) {
if ($result = $mysqli->store_result()) {
echo "<br>Products:<br>";
while ($row = $result->fetch_assoc()) {
echo "Product ID: " . $row["id"] . " - Product Name: " . $row["product_name"] . "<br>";
}
$result->free();
}
}
}
$mysqli->close();
?>
In diesem Beispiel haben wir Daten erfolgreich aus den drei Tabellen von Benutzern , Bestellungen und Produkten abgerufen und die Ergebnisse jeder Abfrage nacheinander verarbeitet.