Heim >Datenbank >MySQL-Tutorial >Warum generiert mein MySQLi-Code den Fehler „Befehle nicht synchron'?
Wenn Sie versuchen, MySQL-Abfragen gleichzeitig auszuführen, kann der Fehler „Befehle nicht synchron“ auftreten . Dies geschieht, wenn der MySQL-Client erkennt, dass noch Zeilen aus einer laufenden Abfrage abgerufen werden müssen, während er versucht, eine neue auszuführen.
Der MySQL-Client verlangt, dass alle Zeilen abgerufen werden aus einer Abfrage abgerufen werden, bevor eine neue Abfrage initiiert wird. Dies verhindert Datenbeschädigungen und stellt sicher, dass der Status des Clients mit dem des Servers synchronisiert bleibt.
1. Vorababrufen der Ergebnisse
Sie können mysqli_store_result() verwenden, um alle Zeilen aus der äußeren Abfrage abzurufen. Dadurch wird der MySQL-Client angewiesen, die Ergebnisse zu puffern, sodass Sie nachfolgende Abfragen ohne Störungen ausführen können.
2. Alle Ergebnisse abrufen
Alternativ können Sie mysqli_result::fetch_all() verwenden, das den vollständigen Ergebnissatz als PHP-Array zurückgibt. Dadurch können Sie das Array durchlaufen, ohne weitere Abfragen durchführen zu müssen.
Gespeicherte Prozeduren können mehrere Ergebnismengen mit jeweils eigenen Zeilen zurückgeben. Um dieses Szenario zu bewältigen, sollten Sie mysqli_multi_query() verwenden. Diese Methode initiiert die gespeicherte Prozedur und durchläuft ihre Ergebnismengen, bis mysqli_next_result() nicht mehr verwendet wird.
In Szenarien, in denen hierarchische Daten in einer flachen Tabelle dargestellt werden Erwägen Sie die Verwendung eines anderen Datenmodellierungsansatzes, um die Abfrage zu vereinfachen.
Für Personen, die CodeIgnitor 3.0.3 verwenden und bei denen dieser Fehler auftritt, gibt es in der Datei mysqli_driver.php eine Problemumgehung. Ändern Sie insbesondere in Zeile 262 die Methode _execute() 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 vonWarum generiert mein MySQLi-Code den Fehler „Befehle nicht synchron'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!