„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie behebe ich den Fehler „Befehle nicht synchron“ in PHP/MySQLi, wenn mehrere vorbereitete Anweisungen ausgeführt werden?

Wie behebe ich den Fehler „Befehle nicht synchron“ in PHP/MySQLi, wenn mehrere vorbereitete Anweisungen ausgeführt werden?

Veröffentlicht am 08.11.2024
Durchsuche:128

How to Resolve the \

Fehler bei nicht synchronen PHP-Befehlen

Beim Ausführen mehrerer vorbereiteter Anweisungen in PHP/MySQLi kann es vorkommen, dass die Meldung „Befehle nicht synchron“ auftritt sync, you can't run the command now“ Fehler. Dies tritt auf, wenn nachfolgende Anweisungen versuchen auszuführen, während vorherige Ergebnisdaten unverarbeitet im Puffer verbleiben.

Um dieses Problem zu beheben, ist es unbedingt erforderlich, die Funktion mysqli_free_result() zu verwenden, um die gespeicherten Ergebnisdaten explizit freizugeben, bevor die nächste ausgeführt wird Stellungnahme. Darüber hinaus ist es wichtig, die Funktion next_result() für das mysqli-Objekt nach jeder Anweisungsausführung aufzurufen, um den internen Zeiger auf die nächste Ergebnismenge zu verschieben.

In Ihrem spezifischen Codebeispiel tritt der Fehler während der Ausführung von auf $stmt1, da das Ergebnis von $stmt nicht gelöscht wird. Durch den expliziten Aufruf von mysqli_free_result($stmt) und den anschließenden Aufruf von $mysqli->next_result() können Sie sicherstellen, dass der Puffer geleert und der Zeiger für die nächste Anweisung zurückgesetzt wird.

Geändertes Codebeispiel:

    $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);
    $stmt1->execute();
    $stmt1->store_result();
    $stmt1->bind_result($privileges);
    $stmt1->fetch();

    $stmt1->free_result();
    $stmt1->close();

Durch die Implementierung dieser Korrekturen beseitigen Sie den Fehler „Befehle nicht synchron“ und stellen sicher, dass nachfolgende vorbereitete Anweisungen nahtlos ausgeführt werden können.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729135816 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3