Aktueller Standort: Startseite> Neueste Artikel> So überprüfen Sie, ob Next_Result () existiert, wenn es ein nachfolgendes Ergebnis mit MySQLI_More_Results () gibt?

So überprüfen Sie, ob Next_Result () existiert, wenn es ein nachfolgendes Ergebnis mit MySQLI_More_Results () gibt?

gitbox 2025-04-29

Bei der Ausführung von Multiquery-Anweisungen mithilfe von MySQLI müssen wir manchmal jedes Ergebnis festlegen. PHP bietet zwei Funktionen: mysqli_more_results () und mysqli_next_result () , damit wir diese Ergebnisse anmutig durchqueren können.

In diesem Artikel wird ein tatsächliches Code -Beispiel verwendet, um zu beschreiben, wie Sie mySQLI_More_Results () verwenden, um festzustellen, ob ein nächstes Ergebnissatz vorliegt, um den falschen Aufruf an mySQLI_NEXT_RESULT () zu vermeiden.

Szene Einführung

Angenommen, Sie haben eine Reihe von SQL -Anweisungen, zum Beispiel:

 SELECT * FROM users;
SELECT * FROM orders;
SELECT * FROM products;

Sie möchten sie gleichzeitig ausführen und die Ergebnisse jeder Abfrage nacheinander verarbeiten. Diese Situation eignet sich für die Verwaltung von Backend -Stapel -Datenanzeigen, Dateninitialisierung und anderen Zwecken.

Führen Sie mit Multi_Query Multi-Statements aus

Zunächst müssen wir eine Verbindung zur Datenbank herstellen und mehrere SQL -Anweisungen mit Multi_Query ausführen:

 $mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}

$sql = "
    SELECT * FROM users;
    SELECT * FROM orders;
    SELECT * FROM products;
";

if ($mysqli->multi_query($sql)) {
    do {
        // Verarbeiten Sie das aktuelle Ergebnissatz
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free();
        }

        // Überprüfen Sie, ob es ein weiteres Ergebnissatz gibt
        if ($mysqli->more_results()) {
            echo "Es gibt mehr Ergebnissätze,Bereit zur weiteren Bearbeitung...\n";
        } else {
            echo "Alle Ergebnisse wurden verarbeitet。\n";
        }

    } while ($mysqli->more_results() && $mysqli->next_result());
} else {
    echo "Ausführung fehlgeschlagen: " . $mysqli->error;
}

$mysqli->close();

veranschaulichen

In diesem Beispiel verwenden wir die folgenden Schlüsselfunktionen:

  • Mysqli :: Multi_Query ($ Query)
    Senden Sie Abfragen mit mehreren SQL -Anweisungen an die Datenbank.

  • Mysqli :: store_result ()
    Holen Sie sich das aktuelle Ergebnissatz.

  • Mysqli :: more_results ()
    Überprüfen Sie, ob noch eine verbleibende Ergebnismenge vorhanden ist.

  • Mysqli :: Next_result ()
    Wechseln Sie zum nächsten Ergebnissatz, damit wir weiter verarbeiten können.

Während der Schleife, die mysqli_more_results () und mysqli_next_result () kombiniert, können wir alle Ergebnissätze sicher verarbeiten, um undefinedes Verhalten oder Fehler zu vermeiden, wenn Sie next_result () falsch aufrufen.

Häufige Fehlerdemonstration

Einige Entwickler verwenden möglicherweise MySQLI_Next_Result () direkt in der Schleife, ohne zu überprüfen, ob mehr Ergebnisse vorliegen, was zum folgenden Fehler führen kann:

 // Falsche Verwendung:Nicht überprüft more_results() Rufen Sie einfach an next_result()
while ($mysqli->next_result()) {
    // Verarbeitungsergebnissätze
}

Dies kann eine Warnung oder einen Fehler ohne nachfolgende Ergebnisse werfen. Daher sollten wir uns immer bei More_Results () erkundigen, bevor wir Next_Result () anrufen.

Zusammenfassen

MySQLI_More_Results () ist ein wichtiges Instrument, um festzustellen, ob nach Verwendung multi_query () weitere Ergebnissätze vorhanden sind. Wenn Sie es mit MySQLI_Next_Result () verwenden, können Sie die Robustheit der Programmlogik gewährleisten und Fehler vermeiden, die durch den Außenzugriff auf die Ergebnismenge verursacht werden.

In den tatsächlichen Projekten wie dem Erstellen eines Berichtssystems oder einer Hintergrunddaten -Logik kann das Beherrschen dieser Technik Ihre PHP -Programme zuverlässiger und wartbarer machen.

Weitere Informationen finden Sie in unserer Entwicklungsdokumentation: https://gitbox.net/docs