Heim >Datenbank >MySQL-Tutorial >Wie kann der Fehler „Befehle nicht synchron' in MySQLi bei der Verwendung verschachtelter Abfragen behoben werden?

Wie kann der Fehler „Befehle nicht synchron' in MySQLi bei der Verwendung verschachtelter Abfragen behoben werden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-08 07:29:10537Durchsuche

How to Resolve the

Fehler: „Befehle nicht synchron“ bei Verwendung von MySQLi

Problem:

An Der Versuch, mehrere MySQLi-Abfragen gleichzeitig auszuführen, löst den Fehler „Befehle nicht synchron“ aus. Die verschachtelten Abfragen rufen hierarchische Daten ab.

Ursache:

MySQL lässt die Ausführung neuer Abfragen nicht zu, während Zeilen aus einer laufenden Abfrage nicht abgerufen werden.

Lösung:

Option 1:Verwenden Sie mysqli_store_result()

$result = mysqli_store_result($db);
// Execute subsequent queries

Dadurch werden die Zeilen im MySQL-Client gepuffert, sodass mehrere Abfragen ausgeführt werden können.

Option 2:Verwenden mysqli_result::fetch_all()

$result = mysqli_query($db, $sql);
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
// Execute subsequent queries

Dies gibt die gesamte Ergebnismenge zurück als ein Array, das die Ausführung mehrerer Abfragen ermöglicht.

Überlegung:

Die verschachtelten Abfragen weisen auf eine hierarchische Datenspeicherung hin. Erwägen Sie alternative Datenmodelle oder die Verwendung von Frameworks wie CodeIgnitor, um mehrere Ergebnismengen aus gespeicherten Prozeduren mithilfe von mysqli_next_result() zu verarbeiten.

CodeIgnitor-Implementierung:

// Edit code in system/database/drivers/mysqli/mysqli_driver.php
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;
}

Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Befehle nicht synchron' in MySQLi bei der Verwendung verschachtelter Abfragen behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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