Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat 'Perintah daripada Penyegerakan' dalam MySQLi Apabila Menggunakan Pertanyaan Bersarang?
Ralat: "Arahan tidak disegerakkan" semasa Menggunakan MySQLi
Masalah:
An percubaan untuk melaksanakan berbilang pertanyaan MySQLi secara serentak mencetuskan ralat "Arahan tidak segerak". Pertanyaan bersarang mendapatkan semula data hierarki.
Punca:
MySQL tidak membenarkan melaksanakan pertanyaan baharu sementara baris daripada pertanyaan sedang berjalan kekal tidak diambil.
Penyelesaian:
Pilihan 1: Gunakan mysqli_store_result()
$result = mysqli_store_result($db); // Execute subsequent queries
Ini menimbal baris dalam Pelanggan MySQL, membenarkan berbilang pertanyaan dilaksanakan.
Pilihan 2: Gunakan mysqli_result::fetch_all()
$result = mysqli_query($db, $sql); $data = mysqli_fetch_all($result, MYSQLI_ASSOC); // Execute subsequent queries
Ini mengembalikan keseluruhan keputusan yang ditetapkan sebagai tatasusunan, membenarkan berbilang pertanyaan dilaksanakan.
Pertimbangan:
Pertanyaan bersarang menunjukkan storan data hierarki. Pertimbangkan model data alternatif atau menggunakan rangka kerja seperti CodeIgnitor untuk mengendalikan berbilang set hasil daripada prosedur tersimpan menggunakan mysqli_next_result().
Pelaksanaan CodeIgnitor:
// Edit code in system/database/drivers/mysqli/mysqli_driver.php protected function _execute($sql) { $results = $this->conn_id->query($this->_prep_query($sql)); @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error return $results; }
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Perintah daripada Penyegerakan' dalam MySQLi Apabila Menggunakan Pertanyaan Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!