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.
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);
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();
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 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;
}
?>
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.
Verarbeiten Sie jedes Ergebnissatz : $ mysqli-> store_result () wird verwendet, um den Ergebnissatz der aktuellen Abfrage zu erhalten. Durch jede Datenreihe durch fetch_assoc () durchlaufen.
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.
Kostenlose Ressourcen : Nach jedem Prozess eines Ergebnissatzes verwenden wir Free () , um den Speicher freizugeben.
Abfragereihenfolge : MySQLI_Multi_query () führt in der Reihenfolge mehrere Abfragen aus, und die Ausführungsreihenfolge stimmt mit der Reihenfolge in SQL -Anweisungen überein.
Fehlerbehandlung : Bei der Ausführung mehrerer Abfragen kann der gesamte Vorgang fehlschlagen. Stellen Sie sicher, dass Sie Fehler gut behandeln.
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.
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.