Heim >Datenbank >MySQL-Tutorial >PHP MySQLi „Befehle nicht synchron': Wie kann der Fehler behoben werden?

PHP MySQLi „Befehle nicht synchron': Wie kann der Fehler behoben werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-22 10:38:12555Durchsuche

PHP MySQLi

PHP-Befehle nicht synchron: Lösung des Dilemmas

Beim Arbeiten mit PHP und MySQLi zum Abrufen von Daten aus einer MySQL-Datenbank wird die Ausführung mehrerer vorbereitet Anweisungen können manchmal zu dem Fehler führen: „Befehle sind nicht synchron, Sie können den Befehl nicht ausführen.“ jetzt.“

Ursache und Lösung

Dieser Fehler tritt auf, wenn das Verbindungsobjekt ($mysqli) ausstehende Ergebnisse einer vorherigen Abfrage hat. Um das Problem zu beheben, müssen Sie nach jeder vorbereiteten Anweisung die Funktion next_result() für das Objekt $mysqli aufrufen.

Betrachten Sie dieses Beispiel:

$stmt = $mysqli->prepare("SELECT id, username, password, firstname, lastname, salt FROM members WHERE email = ? LIMIT 1");
$stmt->bind_param('s', $loweredEmail);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($user_id, $username, $db_password, $firstname, $lastname, $salt);
$stmt->fetch();
$stmt->free_result();
$stmt->close();

while ($mysqli->more_results()) {
    $mysqli->next_result();
}

$stmt1 = $mysqli->prepare("SELECT privileges FROM delegations WHERE id = ? LIMIT 1");
$stmt1->bind_param('s', $user_id);
// This is where the error occurs
$stmt1->execute();

In diesem Code wird der Fehler sein Wird beim Ausführen der zweiten Anweisung ($stmt1) ausgelöst. Um das Problem zu beheben, fügen Sie vor der Ausführung von $stmt1 die folgende Zeile hinzu:

$mysqli->next_result();

Zusätzliche Tipps

  • Stellen Sie sicher, dass Sie immer free_result() aufrufen und schließen( ) für das $stmt-Objekt nach jeder Abfrageausführung.
  • Verwenden Sie separate $stmt-Objekte für jede vorbereitete Anweisung, wenn möglich.
  • Wenn der Fehler auch nach dem Ausprobieren der oben genannten Lösungen auftritt, sollten Sie mit mysqli::more_results() und mysqli::next_result() prüfen, ob noch ausstehende Ergebnisse im Puffer vorhanden sind.

Das obige ist der detaillierte Inhalt vonPHP MySQLi „Befehle nicht synchron': Wie kann der Fehler 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