Perintah Tidak Segerak, Isu Penyata Disediakan MySQL
Anda menghadapi ralat "Perintah tidak segerak" semasa cuba menjalankan dua MySQL pertanyaan menggunakan mysqli dan PHP. Ralat ini berlaku apabila terdapat berbilang pertanyaan tidak buffer sedang dijalankan dan arahan tidak dilaksanakan dalam susunan yang betul.
Dalam kod anda, anda telah menyediakan dua pertanyaan: $countQuery dan $recordsQuery. Walau bagaimanapun, secara lalai, mysqli menggunakan pertanyaan tidak buffer untuk pernyataan yang disediakan. Ini bermakna keputusan untuk setiap pertanyaan mesti diambil sebelum melaksanakan pertanyaan seterusnya.
Punca Ralat
Kod anda cuba untuk melaksanakan $recordsQuery dalam gelung $ countQuery. Memandangkan keputusan $countQuery tidak diambil, mysqli menganggap ini sebagai pertanyaan tidak buffer dan meneruskan untuk melaksanakan $recordsQuery tidak teratur. Ini menyebabkan ralat "Arahan tidak segerak".
Penyelesaian
Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:
Contoh dengan store_result()
if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $numRecords->store_result(); // Buffer the query results $data = $con->query($countQuery) or die(print_r($con->error)); $rowcount = $data->num_rows; // Continue with your code...
Nota:
Jika anda menggunakan $countQuery untuk mengira baris sebelum $recordsQuery, pastikan anda membebaskan hasilnya daripada $countQuery menggunakan $numRecords->free_result() sebelum melaksanakan $recordsQuery. Ini tidak perlu jika anda menggunakan store_result.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Arahan Tidak Segerak' dengan Penyata Disediakan MySQL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!