Mehrere Abfragen
In diesem Artikel konzentrier wir uns auf die Funktion mysqli_multi_query() in PHP, die zum Ausführen mehrerer Abfragen in einem einzigen Aufruf verwendet wird. Wir bieten Ihnen einen Überblick über die Funktion, ihre Funktionsweise und Beispiele für deren Verwendung.
Einführung in die mysqli_multi_query()-Funktion
Die mysqli_multi_query()-Funktion ist eine integrierte Funktion in PHP, die zum Ausführen mehrerer Abfragen in einem einzigen Aufruf dient. Diese Funktion ist nützlich, wenn Sie eine Reihe von Abfragen ausführen müssen, die voneinander abhängen, oder wenn Sie einen Stapel von Abfragen auf einmal ausführen müssen.
Verwendung der mysqli_multi_query()-Funktion
Die Verwendung der mysqli_multi_query()-Funktion ist sehr einfach. Sie müssen die Funktion lediglich für eine gültige MySQLi-Verbindung mit einer Zeichenkette mehrerer, durch Semikolons getrennter Abfragen aufrufen. Hier ist ein Beispiel:
Wie verwendet man die mysqli_multi_query()-Funktion?
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
die("Connection failed: " . mysqli_connect_error());
}
$query = "INSERT INTO table1 VALUES ('value1', 'value2', 'value3');";
$query .= "UPDATE table2 SET column1 = 'newvalue' WHERE id = 1;";
if (mysqli_multi_query($mysqli, $query)) {
do {
if ($result = mysqli_store_result($mysqli)) {
while ($row = mysqli_fetch_row($result)) {
print_r($row);
}
mysqli_free_result($result);
}
} while (mysqli_next_result($mysqli));
} else {
echo "Error: " . mysqli_error($mysqli);
}
mysqli_close($mysqli);
?>In diesem Beispiel rufen wir die mysqli_connect()-Funktion auf, um uns mit einem Benutzernamen und Passwort mit einer MySQL-Datenbank zu verbinden. Anschließend erstellen wir eine Zeichenkette, die zwei durch Semikolons getrennte Abfragen enthält. Danach rufen wir die mysqli_multi_query()-Funktion für die MySQLi-Verbindung auf, um beide Abfragen gleichzeitig auszuführen. Abschließend schließen wir die MySQLi-Verbindung mit der mysqli_close()-Funktion.
Wichtige Hinweise:
mysqli_multi_query()kann mehrere Ergebnissets zurückgeben. Diedo...while-Schleife in Kombination mitmysqli_store_result()undmysqli_next_result()stellt sicher, dass alle Ergebnisse ordnungsgemäß abgerufen und bereinigt werden, um „Commands out of sync“-Fehler zu vermeiden.- Überprüfen Sie immer den Rückgabewert von
mysqli_multi_query(), um Ausführungsfehler angemessen zu behandeln. - Diese Funktion unterstützt vorbereitete Anweisungen (Prepared Statements) nicht direkt. Für Abfragen, die Benutzereingaben enthalten, verwenden Sie
mysqli_prepare()für jede Abfrage einzeln, um SQL-Injection zu verhindern. - Für voneinander abhängige Abfragen, die gemeinsam erfolgreich sein oder fehlschlagen müssen, bevorzugen Sie die Verwendung von Transaktionen (
mysqli_begin_transaction(),mysqli_commit(),mysqli_rollback()) anstelle vonmysqli_multi_query(), um Atomarität zu gewährleisten.
Fazit
Zusammenfassend lässt sich sagen, dass die mysqli_multi_query()-Funktion ein nützliches Werkzeug zum Ausführen mehrerer Abfragen in einem einzigen Aufruf ist. Durch das Verständnis der Funktionsweise, den Umgang mit mehreren Ergebnissets und die Anwendung bewährter Praktiken wie Transaktionen und vorbereitete Anweisungen können Sie leistungsstarke und effiziente MySQLi-Abfragen erstellen.
Practice
What is the primary purpose of the 'multi_query' function in PHP?