Heim >Backend-Entwicklung >PHP-Tutorial >Warum erhalte ich in MySQLi die Fehlermeldung „Befehle nicht synchron'?
Warum gibt MySQLi den Fehler „Befehle nicht synchron“ aus?
Der MySQL-Client erlaubt Ihnen nicht, eine neue Abfrage auszuführen während noch Zeilen aus einer laufenden Abfrage abgerufen werden müssen. Weitere Informationen zu „Befehle nicht synchron“ finden Sie im MySQL-Dokument zu häufigen Fehlern.
Lösung:
Verwenden Sie mysqli_store_result(), um alle Zeilen vorab abzurufen die äußere Abfrage. Dadurch werden sie im MySQL-Client gepuffert, sodass der Server davon ausgeht, dass Ihre App den gesamten Ergebnissatz abgerufen hat. Sie können dann weitere Abfragen ausführen, sogar innerhalb einer Schleife zum Abrufen von Zeilen aus der jetzt gepufferten äußeren Ergebnismenge.
Alternativ können Sie mysqli_result::fetch_all() verwenden, das die vollständige Ergebnismenge als PHP-Array zurückgibt. Sie können dann über dieses Array iterieren.
Sonderfall für gespeicherte Prozeduren:
Gespeicherte Prozeduren können mehrere Ergebnismengen zurückgeben, jede mit ihrem eigenen Satz von Zeilen. Daher ist es notwendig, mysqli_multi_query() zu verwenden und eine Schleife durchzuführen, bis mysqli_next_result() keine zusätzlichen Ergebnismengen mehr zurückgibt. Dies ist erforderlich, um das MySQL-Protokoll zu erfüllen, auch wenn Ihre gespeicherte Prozedur nur einen einzigen Ergebnissatz hat.
Hinweis:
Verschachtelte Abfragen werden häufig zur Darstellung von Hierarchien in verwendet Daten, aber eine alternative Methode mit einfacherer Abfrage könnte vorzuziehen sein. Erwägen Sie, Ihre Daten anders zu speichern, um die Abfrage zu erleichtern.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in MySQLi die Fehlermeldung „Befehle nicht synchron'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!