Aktueller Standort: Startseite> Neueste Artikel> Next_result () in Kombination mit MySQLi_Multi_query () Komplettem Multiquery-Ausführungsprozess

Next_result () in Kombination mit MySQLi_Multi_query () Komplettem Multiquery-Ausführungsprozess

gitbox 2025-05-02

Bei Verwendung von MySQL -Datenbanken in PHP müssen wir häufig mehrere Abfragen ausführen. MySQLI_Multi_Query () bietet die Möglichkeit, mehrere Abfragen auszuführen. Nachdem mehrere Abfragen ausgeführt wurden, wie können Sie die Ergebnisse jeder Abfrage einzeln nacheinander erhalten? Zu diesem Zeitpunkt ist die Next_Result () -Methode nützlich. In diesem Artikel wird detailliert erläutert, wie ein vollständiger Multi-Quer-Ausführungsprozess über Next_Result () und MySQLI_Multi_Query () implementiert werden kann.

Was sind MySQLI_Multi_query () und Next_Result () ?

  1. MySQLI_Multi_query () : Dies ist eine von MySQLI bereitgestellte Methode, um mehrere SQL -Abfragen auszuführen. Diese Methode führt mehrere SQL -Abfragen gleichzeitig aus und gibt einen booleschen Wert zurück, um anzuzeigen, ob die Ausführung erfolgreich ist.

    Beispiel:

     $mysqli->multi_query($query);
    
  2. NEXT_RESULT () : Dies ist eine weitere Methode, die von MySQLI bereitgestellt wird, um das nächste Ergebnis in Multiquery-Ergebnissen zu erhalten. Wenn die Abfrage mehrere Ergebnissätze enthält (z. B. mehrere Auswahlabfragen ), müssen Sie Next_Result () verwenden, um jedes Ergebnissatz in der Sequenz abzurufen.

    Beispiel:

     $mysqli->next_result();
    

Führen Sie mehrere Abfragen mit mySQLI_Multi_query () aus ()

Zunächst müssen wir eine Verbindung zur Datenbank herstellen und sicherstellen, dass die MySQL -Verbindung hergestellt wurde:

 <?php
$mysqli = new mysqli('localhost', 'user', 'password', 'database');

// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}
?>

Als nächstes erstellen wir eine SQL -Anweisung mit mehreren Abfragen:

 <?php
$query = "SELECT * FROM users;
          SELECT * FROM products;
          SELECT * FROM orders;";
?>

Im obigen Code haben wir drei Abfragen: eine Abfrage -Benutzer -Tabelle, eine Tabelle mit Abfragenprodukten und eine Abfragebestellentabelle . Wir möchten diese Abfragen ausführen und die Ergebnisse jeder Abfrage nacheinander erhalten.

Verwenden Sie MySQLI_Multi_query (), um eine Abfrage auszuführen

Verwenden Sie MySQLI_Multi_query (), um mehrere Abfragen auszuführen, und verwenden Sie Next_Result (), um den Ergebnissatz jeder Abfrage zu erhalten:

 <?php
// Führen Sie mehrere Fragen aus
if ($mysqli->multi_query($query)) {
    // Jedes Ergebnissatz schleifen
    do {
        if ($result = $mysqli->store_result()) {
            // Holen Sie sich das Ergebnissatz für jede Abfrage und zeigen Sie sie an
            while ($row = $result->fetch_assoc()) {
                echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
            }
            $result->free();
        }

        // Wenn es mehr Ergebnissätze gibt,Weiter verarbeiten
        if ($mysqli->more_results()) {
            $mysqli->next_result();
        }
    } while ($mysqli->more_results());
} else {
    echo "Error: " . $mysqli->error;
}
?>

Code Erläuterung

  1. Ausführen von Abfrage : $ mysqli-> multi_query ($ query) wird verwendet, um mehrere Abfragen auszuführen. Wenn die Abfrage erfolgreich ist, kehrt sie wahr und tritt dann in die Schleife ein.

  2. Verarbeiten Sie jedes Ergebnissatz : $ mysqli-> store_result () wird verwendet, um den Ergebnissatz der aktuellen Abfrage zu erhalten. Durch jede Datenreihe durch fetch_assoc () durchlaufen.

  3. Weitere Ergebnissätze finden Sie unter : $ mysqli-> more_results () wird verwendet, um zu überprüfen, ob weitere Ergebnissätze vorhanden sind. Wenn ja, verwenden Sie Next_Result () , um weiterhin das nächste Ergebnissatz zu erhalten.

  4. Kostenlose Ressourcen : Nach jedem Prozess eines Ergebnissatzes verwenden wir Free () , um den Speicher freizugeben.

Dinge zu beachten

  1. Abfragereihenfolge : MySQLI_Multi_query () führt in der Reihenfolge mehrere Abfragen aus, und die Ausführungsreihenfolge stimmt mit der Reihenfolge in SQL -Anweisungen überein.

  2. Fehlerbehandlung : Bei der Ausführung mehrerer Abfragen kann der gesamte Vorgang fehlschlagen. Stellen Sie sicher, dass Sie Fehler gut behandeln.

  3. Datensicherheit : Verwenden Sie vorbereitete Anweisungen, um SQL -Injektionsprobleme zu verhindern. Bei der Ausführung mehrerer Abfragen ist es am besten, Vorverarbeitungsanweisungen zum Schutz der Datensicherheit zu verwenden.

URL -Ersatzbeispiel

Wenn Sie an einer URL in der Abfrage beteiligt sind und den Domänennamen durch gitbox.net ersetzen müssen, z. B. durch:

 <?php
$query = "SELECT * FROM websites WHERE url = 'http://example.com';";
?>

In diesem Fall ersetzen Sie einfach den Domänennamen der URL durch gitbox.net , beispielsweise:

 <?php
$query = "SELECT * FROM websites WHERE url = 'http://gitbox.net';";
?>

Auf diese Weise können Sie bei der Bearbeitung von Abfragen alle Domainnamen durch Gitbox.net flexibel ersetzen.