Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan Ralat 'Arahan Tidak Segerak' dalam Pertanyaan MySQL PHP?
Arahan Tidak Segerak: Menyelesaikan Isu dalam PHP
Apabila bekerja dengan berbilang pertanyaan MySQL dalam PHP menggunakan mysqli, anda mungkin menghadapi ralat : "Arahan tidak segerak; anda tidak boleh menjalankan arahan ini sekarang." Ralat ini timbul disebabkan oleh penggunaan pertanyaan tidak buffer, yang bermaksud bahawa hasil pertanyaan mesti diproses secara berurutan sebelum pertanyaan seterusnya boleh dilaksanakan.
Dalam coretan kod yang disediakan, anda melaksanakan pertanyaan untuk menentukan bilangan rekod ($numRecords) dalam jadual berdasarkan klausa SUKA. Walau bagaimanapun, pembolehubah $data masih merujuk hasil pertanyaan sebelumnya, yang tidak segerak.
Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:
Selepas melaksanakan $numRecords->execute(), ambil keputusan ke dalam tatasusunan menggunakan $data = $numRecords->get_result(). Ini akan menyimpan hasil pertanyaan dan membolehkan anda terus melaksanakan pertanyaan lain.
Gunakan store_result(): ) kaedah pada objek pernyataan selepas pelaksanaan ($numRecords->store_result()). Ini akan mengarahkan mysqli untuk menimbal hasil, membolehkan anda melaksanakan pertanyaan berikutnya tanpa ralat tidak segerak.
Berikut ialah coretan kod yang diubah suai menggunakan kaedah 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); }
Nota bahawa ralat arahan tidak segerak juga boleh berlaku jika anda melaksanakan bukan pertanyaan (cth., INSERT, UPDATE) dan kemudian cuba laksanakan pertanyaan yang mendapatkan semula data daripada jadual yang sama tanpa menutup sambungan terlebih dahulu atau mengambil keputusan bukan pertanyaan. Pastikan anda telah menutup sambungan atau mengendalikan hasil pertanyaan sebelumnya sebelum melaksanakan pertanyaan berikutnya.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Arahan Tidak Segerak' dalam Pertanyaan MySQL PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!