Ralat arahan tidak segerak dalam PHP: Memahami dan menyelesaikan
Sebelum menyediakan sebarang pertanyaan, pertanyaan "SET NAMES 'utf8'" mesti dilaksanakan kerana ia menetapkan set aksara sambungan pangkalan data dan mempengaruhi tafsiran data dalam pertanyaan berikutnya.
Memandangkan MySQL menggunakan pertanyaan tidak buffer secara lalai dalam pernyataan yang disediakan, menjalankan berbilang pertanyaan dalam satu skrip boleh menyebabkan masalah. mysqli melakukan pertanyaan segera yang memerlukan satu pertanyaan untuk diselesaikan sebelum pertanyaan lain boleh dilaksanakan. Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:
1. Ekstrak keputusan ke dalam tatasusunan
Kaedah ini melibatkan pelaksanaan pertanyaan pertama, mengekstrak hasilnya ke dalam tatasusunan, dan kemudian melaksanakan pertanyaan kedua. Kod di bawah menunjukkan ini:
<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. Pertanyaan penimbal
Gunakan store_result()
untuk mengarahkan mysqli menimbal hasil pertanyaan, membolehkan anda melaksanakan berbilang pertanyaan serentak. Lakukan ini dengan menambah baris berikut selepas pernyataan prepare()
:
<code class="language-php">$stmt->store_result();</code>
Ini secara berkesan akan menyimpan hasil pertanyaan dalam penimbal, membolehkan anda melaksanakan pertanyaan kedua tanpa menghadapi ralat "perintah tidak segerak".
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Arahan daripada Penyegerakan' dalam Penyata Disediakan MySQLi PHP, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!