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

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

Patricia Arquette
Freigeben: 2024-12-08 18:24:12
Original
549 Leute haben es durchsucht

How to Fix MySQLi's

Fehlerbehebung beim MySQLi-Fehler „Befehle nicht synchron“

Der MySQLi-Fehler „Befehle nicht synchron“ tritt auf, wenn nachfolgende Abfragen ausgeführt werden, bevor alle abgerufen werden Zeilen aus der vorherigen Abfrage. Um dieses Problem zu beheben, stellen Sie sicher, dass Sie alle Zeilen abrufen, bevor Sie zusätzliche Abfragen ausführen.

Fehlerursache:

Der MySQL-Client verbietet die Ausführung neuer Abfragen, solange Zeilen nicht von einem abgerufen werden laufende Abfrage. Dies dient dazu, die Datenintegrität aufrechtzuerhalten und Konflikte zwischen mehreren Ergebnissätzen zu verhindern.

Mögliche Lösungen:

1. Zeilen vorab abrufen mit mysqli_store_result() oder mysqli_fetch_all()

Mit mysqli_store_result():

$result = mysqli_store_result($db);
Nach dem Login kopieren

Verwenden mysqli_fetch_all():

$result = mysqli_query($db, $sql)->fetch_all();
Nach dem Login kopieren

2. Verwenden Sie mysqli_next_result() für gespeicherte Prozeduren

Wenn Sie eine gespeicherte Prozedur ausführen, kann diese mehrere Ergebnismengen zurückgeben. Verwenden Sie in solchen Fällen mysqli_next_result(), um alle Ergebnismengen zu durchlaufen und zu vervollständigen, bevor Sie zusätzliche Abfragen ausführen.

while ($result = mysqli_next_result($db)) {
    // process the result set
}
Nach dem Login kopieren

3. Alternative Datenspeicherung für Hierarchien

Erwägen Sie, hierarchische Daten anders zu speichern, um Abfragen zu vereinfachen. Erkunden Sie verschiedene Datenbankmodelle wie Adjazenzlisten oder verschachtelte Mengenmodelle, um die Datenstruktur zu optimieren und die Abfrageeffizienz zu verbessern.

Zusätzlicher Hinweis:

Für CodeIgnitor-Benutzer: Dieser Fehler tritt aufgrund eines bekannten Problems im MySQL-Treiber auf. Um das Problem zu beheben, ändern Sie die Funktion _execute() des Treibers wie folgt:

protected function _execute($sql)
{
    $results = $this->conn_id->query($this->_prep_query($sql));
    @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error
    return $results;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQLi-Fehler „Befehle nicht synchron'?. 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