Heim > Backend-Entwicklung > PHP-Tutorial > Wie behebe ich den Fehler „Befehle nicht synchron' in MySQLi?

Wie behebe ich den Fehler „Befehle nicht synchron' in MySQLi?

Patricia Arquette
Freigeben: 2024-12-02 07:57:09
Original
802 Leute haben es durchsucht

How to Resolve the

Fehler „Befehle nicht synchron“ in MySQLi

In Ihrem Code, der mehrere MySQLi-Abfragen umfasst, tritt der Fehler „Befehle nicht synchron“ auf. Dieser Fehler tritt auf, weil der MySQL-Client die Ausführung neuer Abfragen verbietet, solange noch Zeilen aus einer laufenden Abfrage abgerufen werden müssen.

Verstehen des Problems

Der MySQL-Client implementiert ein strenges Protokoll, das sicherstellt, dass Abfragen der Reihe nach ausgeführt werden. Wenn Sie verschachtelte Abfragen oder Prozeduren haben, die mehrere Ergebnismengen zurückgeben, schreibt das Protokoll vor, dass Sie alle Zeilen aus einer Ergebnismenge abrufen, bevor Sie die nächste Abfrage ausführen. In Ihrem Fall versuchen Sie jedoch, eine neue Abfrage auszuführen, während noch Zeilen aus der vorherigen abzurufen sind.

Lösungen

Es gibt zwei Hauptlösungen Lösungsansätze für das Problem:

  1. Ergebnisse vorab abrufen:Verwenden mysqli_store_result() oder mysqli_result::fetch_all(), um die Ergebnisse der äußeren Abfrage im MySQL-Client zu puffern. Dadurch können Sie weitere Abfragen ausführen, ohne dass der Fehler auftritt.
  2. Mehrere Ergebnismengen verarbeiten: Wenn Ihre gespeicherte Prozedur mehrere Ergebnismengen zurückgibt, müssen Sie mysqli_multi_query() verwenden und eine Schleife bis mysqli_next_result durchführen () zeigt an, dass keine weiteren Ergebnisse vorliegen. Dadurch wird sichergestellt, dass Sie das MySQL-Protokoll einhalten.

Überlegungen zur alternativen Datenspeicherung

Bei hierarchischen Daten sollten Sie eine andere Speicherung in Betracht ziehen, um Abfragen zu vereinfachen. Sie könnten beispielsweise Adjazenzlisten oder verschachtelte Mengenmodelle verwenden.

Zusätzliche Hinweise

In CodeIgnitor 3.0.3 können Sie den Fehler „Befehle nicht synchron“ beheben durch Ändern der _execute()-Methode in system/database/drivers/mysqli/mysqli_driver.php.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Befehle nicht synchron' in MySQLi?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage