Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich „Befehle nicht synchron'-Fehler in PHPs MySQLi-vorbereiteten Anweisungen und wie kann ich sie beheben?

Warum erhalte ich „Befehle nicht synchron'-Fehler in PHPs MySQLi-vorbereiteten Anweisungen und wie kann ich sie beheben?

Linda Hamilton
Freigeben: 2025-01-23 01:08:08
Original
1020 Leute haben es durchsucht

Why Do I Get

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage