Heim > Backend-Entwicklung > PHP-Tutorial > MySQL-Fehler „Befehle nicht synchron': Wie löst man sequentielle Abfrageprobleme mit mysqli?

MySQL-Fehler „Befehle nicht synchron': Wie löst man sequentielle Abfrageprobleme mit mysqli?

Barbara Streisand
Freigeben: 2025-01-04 13:13:08
Original
708 Leute haben es durchsucht

MySQL `Commands Out of Sync` Error: How to Resolve Sequential Query Issues with mysqli?

MySQL: Fehler „Befehle nicht synchron“

Problem:

Benutzer stoßen auf die Meldung „Befehle Fehler „nicht synchron; Sie können diesen Befehl jetzt nicht ausführen“, wenn Sie versuchen, mehrere MySQL-Abfragen nacheinander auszuführen mysqli.

Ursache:

Dieser Fehler tritt auf, weil mysqli standardmäßig ungepufferte Abfragen für vorbereitete Anweisungen verwendet. Das bedeutet, dass die Ergebnisse der ersten Abfrage abgerufen werden müssen, bevor die nächste ausgeführt wird.

Lösung:

Es gibt zwei Möglichkeiten, dieses Problem zu beheben:

Methode 1: Ergebnisse in ein Array abrufen

Ergebnisse der ersten Abfrage abrufen in ein Array und durchlaufen Sie es. Dieser Ansatz umfasst die folgenden Schritte:

  1. Führen Sie die erste Abfrage aus.
  2. Rufen Sie alle Zeilen in ein Array mit mysqli_fetch_all() oder $stmt->fetch_all().
  3. Geben Sie das Ergebnis mit mysqli_free_result() frei oder $stmt->free_result().
  4. Führen Sie die zweite Abfrage aus.

Methode 2: Abfragen puffern

Mysqli zum Puffern konfigurieren die Abfragen mit mysqli_stmt_store_result(). Dieser Ansatz umfasst die folgenden Schritte:

  1. Bereiten Sie die erste Abfrage vor.
  2. Führen Sie die Abfrage aus.
  3. Rufen Sie $stmt->store_result() auf, um die Ergebnisse zu puffern .
  4. Führen Sie die zweite aus Abfrage.

Implementierung:

Um beispielsweise Methode 2 in Ihrem bereitgestellten Code zu implementieren:

...
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $numRecords->store_result(); // Buffer the results
    ...
}
...
Nach dem Login kopieren

Zusätzlich Hinweise:

  • Für nicht vorbereitete Anweisungen (mit mysqli_query()), das Standardverhalten ist gepuffert.
  • Wenn der Fehler bei der Verwendung einer „SELECT *“-Abfrage auftritt, kann dies daran liegen, dass eine temporäre Tabelle erstellt wird, was zu Inkonsistenzen in der Abfragereihenfolge führen kann.

Das obige ist der detaillierte Inhalt vonMySQL-Fehler „Befehle nicht synchron': Wie löst man sequentielle Abfrageprobleme mit 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