Beim Betrieb einer Datenbank in PHP besteht eine der gängigen Anforderungen darin, mehrere SQL -Anweisungen auszuführen, um komplexe Transaktionen oder Stapeldatenverarbeitung abzuschließen. Die Funktion von MySQLI_Multi_query () ist dafür ausgelegt, wodurch mehrere SQL -Anweisungen gleichzeitig ausgeführt werden können, die die Effizienz verbessern und den Code vereinfachen. In diesem Artikel wird detailliert erläutert, wie mehrere SQL -Anweisungen mithilfe von MySQLI_Multi_Query () korrekt ausgeführt werden, nachdem eine Datenbankverbindung mithilfe der Funktion Connect () und das Rückgabeergebnis verarbeitet wird.
Zunächst stellen wir eine Verbindung zur MySQL -Datenbank über die Funktion Connect () her. Angenommen, dies ist eine verpackte Funktion, die ein gültiges MySQLI -Objekt zurückgibt.
<?php
function connect() {
$host = 'localhost';
$user = 'root';
$password = 'password';
$database = 'testdb';
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
die('Verbindung ist fehlgeschlagen: ' . $conn->connect_error);
}
return $conn;
}
?>
Angenommen, wir haben mehrere SQL-Anweisungen, die ausgeführt werden müssen, z. B. das Erstellen von Tabellen, das Einfügen von Daten usw., und wir können sie in eine Semikolon ( ; ) -verzögerte Zeichenfolge kombinieren und an mysqli_multi_query () weitergeben.
<?php
$conn = connect();
$sql = "
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);
INSERT INTO users (username, email) VALUES ('Zhang San', 'zhangsan@m66.net');
INSERT INTO users (username, email) VALUES ('Li Si', 'lisi@m66.net');
";
if ($conn->multi_query($sql)) {
do {
// Speichern Sie das erste Ergebnissatz
if ($result = $conn->store_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
// Wenn es mehr Ergebnissätze gibt,Setzen Sie die Schleife fort
} while ($conn->more_results() && $conn->next_result());
} else {
echo "Die Ausführung mehrerer Anweisungen schlug fehl: " . $conn->error;
}
$conn->close();
?>
SQL -Anweisungsformat : Mehrere SQL -Anweisungen müssen durch Semikolons getrennt werden, und jede Anweisung hat die richtige Syntax.
Ergebnisverarbeitung : Nachdem MySQLI_Multi_query () ausgeführt wurde, müssen alle Ergebnissätze durch Looping Store_Result () und More_Results () durchquert werden. Auch wenn einige Aussagen das Ergebnis nicht zurückgeben, rufen Sie Next_Result () an, um zum nächsten Ergebnis zu springen.
Fehlerbehandlung : Wenn die Ausführung fehlschlägt, können Sie spezifische Fehlerinformationen über $ conn-> Fehler für das einfache Debuggen abrufen.