Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich „Befehle nicht synchron'-Fehler in PHPs MySQLi-vorbereiteten Anweisungen und wie kann ich sie beheben?
Fehler „Befehl nicht synchron“ in PHP: Verständnis und Lösung
Vor der Vorbereitung einer Abfrage muss die Abfrage „SET NAMES ‚utf8‘“ ausgeführt werden, da sie den Zeichensatz der Datenbankverbindung festlegt und die Interpretation der Daten in nachfolgenden Abfragen beeinflusst.
Da MySQL in vorbereiteten Anweisungen standardmäßig ungepufferte Abfragen verwendet, kann die Ausführung mehrerer Abfragen in einem einzigen Skript zu Problemen führen. mysqli führt sofortige Abfragen aus, die den Abschluss einer Abfrage erfordern, bevor eine andere Abfrage ausgeführt werden kann. Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:
1. Extrahieren Sie die Ergebnisse in ein Array
Diese Methode umfasst das Ausführen der ersten Abfrage, das Extrahieren ihrer Ergebnisse in ein Array und das anschließende Ausführen der zweiten Abfrage. Der folgende Code demonstriert dies:
<code class="language-php">$con = mysqli_connect("localhost", "user", "password", "db"); if (!$con) { echo "无法连接到 MySQL 服务器。错误代码:%s\n". mysqli_connect_error(); exit; } // 设置字符集 $con->query("SET NAMES 'utf8'"); // 第一个查询 $countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %"; $numRecords = $con->prepare($countQuery); $numRecords->bind_param("s", $brand); $numRecords->execute(); $result = $numRecords->get_result(); // 将结果提取到数组中 $rowcount = $result->num_rows; // 第二个查询 $rows = getRowsByArticleSearch("test", "Auctions", " ");</code>
2. Gepufferte Abfrage
Verwenden Sie store_result()
, um mysqli anzuweisen, Abfrageergebnisse zu puffern, sodass Sie mehrere Abfragen gleichzeitig ausführen können. Fügen Sie dazu nach der prepare()
-Anweisung die folgende Zeile hinzu:
<code class="language-php">$stmt->store_result();</code>
Dadurch werden die Abfrageergebnisse effektiv in einem Puffer gespeichert, sodass Sie eine zweite Abfrage ausführen können, ohne dass der Fehler „Befehl nicht synchron“ auftritt.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich „Befehle nicht synchron'-Fehler in PHPs MySQLi-vorbereiteten Anweisungen und wie kann ich sie beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!