Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebe ich „Befehle nicht synchron'-Fehler in PHP-MySQL-Abfragen?

Wie behebe ich „Befehle nicht synchron'-Fehler in PHP-MySQL-Abfragen?

Susan Sarandon
Susan SarandonOriginal
2024-12-19 10:25:10385Durchsuche

How to Fix

Befehle nicht synchron: Beheben des Problems in PHP

Beim Arbeiten mit mehreren MySQL-Abfragen in PHP unter Verwendung von mysqli kann der Fehler auftreten : „Befehle nicht synchron; Sie können diesen Befehl jetzt nicht ausführen.“ Dieser Fehler entsteht durch die Verwendung ungepufferter Abfragen, was bedeutet, dass das Ergebnis einer Abfrage sequentiell verarbeitet werden muss, bevor eine nachfolgende Abfrage ausgeführt werden kann.

Im bereitgestellten Code-Snippet führen Sie eine Abfrage aus, um die zu ermitteln Anzahl der Datensätze ($numRecords) in einer Tabelle basierend auf einer LIKE-Klausel. Die Variable $data verweist jedoch immer noch auf das Ergebnis der vorherigen Abfrage, das nicht synchronisiert ist.

Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:

  1. Rufen Sie das Ergebnisarray ab:

Nachdem Sie $numRecords->execute() ausgeführt haben, rufen Sie das ab Ergebnisse in ein Array mit $data = $numRecords->get_result(). Dadurch werden die Ergebnisse der Abfrage gespeichert und Sie können mit der Ausführung anderer Abfragen fortfahren.

  1. Verwenden Sie store_result():

Verwenden Sie das store_result( )-Methode für das Anweisungsobjekt nach der Ausführung ($numRecords->store_result()). Dadurch wird mysqli angewiesen, die Ergebnisse zu puffern, sodass Sie nachfolgende Abfragen ohne den Fehler „Asynchronität“ ausführen können.

Hier ist ein geänderter Codeausschnitt mit der Methode get_result():

$con->query("SET NAMES 'utf8'");
$brand ="o";
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    
    // Fetch the result array into $data
    $data = $numRecords->get_result();
    $rowcount = mysqli_num_rows($data);
    $rows = getRowsByArticleSearch("test", "Auctions", " ");
    $last = ceil($rowcount/$page_rows);
} else {
    print_r($con->error);
}

Hinweis Der Fehler „Befehle nicht synchron“ kann auch auftreten, wenn Sie eine Nicht-Abfrage ausführen (z. B. INSERT, UPDATE) und dann versuchen, eine entsprechende Abfrage auszuführen Ruft Daten aus derselben Tabelle ab, ohne zuerst die Verbindung zu schließen oder die Ergebnisse der Nichtabfrage abzurufen. Stellen Sie sicher, dass Sie die Verbindung geschlossen oder die Ergebnisse früherer Abfragen verarbeitet haben, bevor Sie nachfolgende Abfragen ausführen.

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