Befehle nicht synchron, MySQL-Vorbereitungsanweisungsproblem
Beim Versuch, zwei MySQL auszuführen, tritt die Fehlermeldung „Befehle nicht synchron“ auf Abfragen mit MySQLi und PHP. Dieser Fehler tritt auf, wenn mehrere ungepufferte Abfragen ausgeführt werden und Befehle nicht in der richtigen Reihenfolge ausgeführt werden.
In Ihrem Code haben Sie zwei Abfragen vorbereitet: $countQuery und $recordsQuery. Standardmäßig verwendet MySQL jedoch ungepufferte Abfragen für vorbereitete Anweisungen. Das bedeutet, dass Ergebnisse für jede Abfrage abgerufen werden müssen, bevor die nächste Abfrage ausgeführt wird.
Fehlerursache
Ihr Code versucht, $recordsQuery innerhalb der Schleife von $ auszuführen countQuery. Da die Ergebnisse von $countQuery nicht abgerufen werden, behandelt mysqli dies als ungepufferte Abfrage und führt $recordsQuery in der falschen Reihenfolge aus. Dies verursacht den Fehler „Befehle nicht synchron“.
Lösung
Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:
Beispiel mit store_result()
if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $numRecords->store_result(); // Buffer the query results $data = $con->query($countQuery) or die(print_r($con->error)); $rowcount = $data->num_rows; // Continue with your code...
Hinweis:
Wenn Sie $countQuery zum Zählen von Zeilen vor $recordsQuery verwenden, stellen Sie sicher, dass Sie das Ergebnis von $countQuery mit freigeben $numRecords->free_result() vor der Ausführung von $recordsQuery. Dies ist nicht erforderlich, wenn Sie store_result.
verwendenDas obige ist der detaillierte Inhalt vonWarum erhalte ich bei MySQL-vorbereiteten Anweisungen in PHP die Fehlermeldung „Befehle nicht synchron'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!