PHP-MySQL-Fehler: Befehl nicht synchron
Ihr PHP-Code versucht, zwei MySQL-Abfragen mit mysqli auszuführen, es tritt jedoch der Fehler „Befehle nicht synchron; Sie können diesen Befehl jetzt nicht ausführen“ auf. Dies wird durch von MySQL vorbereitete Anweisungsabfragen verursacht, die sich standardmäßig im nicht gepufferten Modus befinden.
Fehlerquelle
mysqli führt Abfragen standardmäßig im ungepufferten Modus aus, was bedeutet, dass die Ergebnismenge nicht im Speicher gespeichert, sondern direkt an den Client gestreamt wird. Da Sie zwei Abfragen verwendet haben, wird die erste Abfrage ausgeführt und die Ergebnismenge gestreamt. Bevor Sie jedoch die Ergebnisse der ersten Abfrage erhalten, versuchen Sie, die zweite Abfrage auszuführen. Dies führt zu einem „Befehl nicht synchron“-Fehler, da MySQL verlangt, dass Sie die Ergebnisse der ersten Abfrage abrufen, bevor Sie die zweite Abfrage ausführen.
Lösung: Gepufferte Abfrage
Um dieses Problem zu lösen, müssen Sie die Abfrage puffern. Sie können die Methode store_result()
des vorbereiteten Anweisungsobjekts verwenden:
<code class="language-php">$numRecords->execute(); $numRecords->store_result();</code>
Durch die Pufferung von Abfragen speichert MySQL die Ergebnismenge der ersten Abfrage im Speicher, sodass Sie sie später abrufen können, ohne dass es zu Konflikten mit der Ausführung der zweiten Abfrage kommt.
Weitere Hinweise
In Ihrem Code versuchen Sie auch, verschiedene Abfragen innerhalb einer foreach-Schleife auszuführen:
<code class="language-php">$result = $con->query($recordsQuery); $rows = array(); while($row = $result->fetch_assoc()) { $rows[] = $row; }</code>
Dies ist eigentlich nicht notwendig, da Sie die Ergebnisse der Abfrage bereits in einer Variablen namens $rows
speichern. Sie können diese Variable direkt in der Schleife verwenden, um auf die abgerufenen Zeilen zuzugreifen.
Durch die Implementierung dieser Änderungen sollten Sie in der Lage sein, MySQL-Abfragen auszuführen, ohne dass Fehler „Befehl nicht synchron“ auftreten.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Fehlermeldung „Befehle nicht synchron' in meinem MySQLi-PHP-Code?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!