Fehler: „Befehle nicht synchron“ bei Verwendung von MySQLi
Problem:
An Der Versuch, mehrere MySQLi-Abfragen gleichzeitig auszuführen, löst den Fehler „Befehle nicht synchron“ aus. Die verschachtelten Abfragen rufen hierarchische Daten ab.
Ursache:
MySQL lässt die Ausführung neuer Abfragen nicht zu, während Zeilen aus einer laufenden Abfrage nicht abgerufen werden.
Lösung:
Option 1:Verwenden Sie mysqli_store_result()
$result = mysqli_store_result($db); // Execute subsequent queries
Dadurch werden die Zeilen im MySQL-Client gepuffert, sodass mehrere Abfragen ausgeführt werden können.
Option 2:Verwenden mysqli_result::fetch_all()
$result = mysqli_query($db, $sql); $data = mysqli_fetch_all($result, MYSQLI_ASSOC); // Execute subsequent queries
Dies gibt die gesamte Ergebnismenge zurück als ein Array, das die Ausführung mehrerer Abfragen ermöglicht.
Überlegung:
Die verschachtelten Abfragen weisen auf eine hierarchische Datenspeicherung hin. Erwägen Sie alternative Datenmodelle oder die Verwendung von Frameworks wie CodeIgnitor, um mehrere Ergebnismengen aus gespeicherten Prozeduren mithilfe von mysqli_next_result() zu verarbeiten.
CodeIgnitor-Implementierung:
// Edit code in system/database/drivers/mysqli/mysqli_driver.php protected function _execute($sql) { $results = $this->conn_id->query($this->_prep_query($sql)); @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error return $results; }
Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Befehle nicht synchron' in MySQLi bei der Verwendung verschachtelter Abfragen behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!