Mehrere Abfragen in einer einzelnen MySQLi-Anweisung
Können Sie eine einzelne MySQLi-Anweisung vorbereiten, die mehrere Abfragen ausführt?
Frage:
Ist es möglich, eine einzelne MySQLi-Anweisung zu erstellen, die mehrere Abfragen ausführt? Zum Beispiel:
<code class="php">mysqli->prepare("query1 ...1,2,3 param...; query2...4,5 param..."); or mysqli->prepare("insert into ...1,2,3 param...; insert into...4,5 param...");</code>
Der Versuch einer solchen Konstruktion führt zu dem Fehler „Aufruf einer Mitgliedsfunktion bind_param() für ein Nicht-Objekt in...“
<code class="php">$stmt = $sql->getQueryPrepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?); INSERT INTO process (id_user, idp) VALUES (?,?);"); $stmt->bind_param("ssssss",$id, $username, $pw, $email, $id, $idp); $stmt->execute(); $stmt->close(); </code>
Antwort:
Eine vorbereitete Anweisung kann nur eine einzige MySQL-Abfrage ausführen. Sie können jedoch mehrere Anweisungen in separaten Variablen vorbereiten:
<code class="php">$stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)"); $stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);");</code>
Diese Anweisungen können nachträglich ausgeführt werden. Wenn Sie sicherstellen müssen, dass beide Abfragen erfolgreich ausgeführt werden, sollten Sie die Verwendung von Transaktionen in Betracht ziehen.
Denken Sie daran, dass der Fehler „Aufruf einer Member-Funktion für ein Nicht-Objekt“ normalerweise auf einen Fehler in der Prepare()-Anweisung hinweist und nicht auf einen Fehler Probleme mit nachfolgendem Code.
Das obige ist der detaillierte Inhalt vonKönnen Sie mehrere Abfragen in einer einzigen MySQLi-Anweisung ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!