Fehlerbehebung beim MySQLi-Fehler „Befehle nicht synchron“
Der MySQLi-Fehler „Befehle nicht synchron“ tritt auf, wenn nachfolgende Abfragen ausgeführt werden, bevor alle abgerufen werden Zeilen aus der vorherigen Abfrage. Um dieses Problem zu beheben, stellen Sie sicher, dass Sie alle Zeilen abrufen, bevor Sie zusätzliche Abfragen ausführen.
Fehlerursache:
Der MySQL-Client verbietet die Ausführung neuer Abfragen, solange Zeilen nicht von einem abgerufen werden laufende Abfrage. Dies dient dazu, die Datenintegrität aufrechtzuerhalten und Konflikte zwischen mehreren Ergebnissätzen zu verhindern.
Mögliche Lösungen:
1. Zeilen vorab abrufen mit mysqli_store_result() oder mysqli_fetch_all()
Mit mysqli_store_result():
$result = mysqli_store_result($db);
Verwenden mysqli_fetch_all():
$result = mysqli_query($db, $sql)->fetch_all();
2. Verwenden Sie mysqli_next_result() für gespeicherte Prozeduren
Wenn Sie eine gespeicherte Prozedur ausführen, kann diese mehrere Ergebnismengen zurückgeben. Verwenden Sie in solchen Fällen mysqli_next_result(), um alle Ergebnismengen zu durchlaufen und zu vervollständigen, bevor Sie zusätzliche Abfragen ausführen.
while ($result = mysqli_next_result($db)) { // process the result set }
3. Alternative Datenspeicherung für Hierarchien
Erwägen Sie, hierarchische Daten anders zu speichern, um Abfragen zu vereinfachen. Erkunden Sie verschiedene Datenbankmodelle wie Adjazenzlisten oder verschachtelte Mengenmodelle, um die Datenstruktur zu optimieren und die Abfrageeffizienz zu verbessern.
Zusätzlicher Hinweis:
Für CodeIgnitor-Benutzer: Dieser Fehler tritt aufgrund eines bekannten Problems im MySQL-Treiber auf. Um das Problem zu beheben, ändern Sie die Funktion _execute() des Treibers wie folgt:
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 behebe ich den MySQLi-Fehler „Befehle nicht synchron'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!