Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Mendapat Ralat 'Arahan tidak segerak' dalam MySQLi Apabila Mendapatkan Data Hierarki?
Arahan MySQL Tidak Disegerakkan Ralat semasa Mendapatkan Hierarki
Seseorang mungkin menghadapi ralat "Perintah tidak segerak" apabila cuba melaksanakan berbilang MySQLi pertanyaan, terutamanya semasa mendapatkan semula data hierarki. Artikel ini menyelidiki isu tersebut, menerangkan puncanya dan menyediakan penyelesaian yang berpotensi.
Punca Punca
Pelanggan MySQL mengehadkan pelaksanaan pertanyaan baharu sementara baris kekal tidak diambil daripada pertanyaan sedang berjalan. Ralat ini berpunca daripada protokol pelanggan, memastikan bahawa semua baris diambil secara berurutan sebelum meneruskan ke pertanyaan baharu.
Penyelesaian Kemungkinan
Untuk menyelesaikan isu ini, beberapa pilihan tersedia :
1. Menggunakan mysqli_store_result()
Kaedah ini pra-mengambil semua baris daripada pertanyaan luar ke dalam penimbal klien. Pelayan MySQL mengakui pengambilan penuh keputusan, membenarkan pertanyaan berikutnya dilaksanakan secara bebas.
2. Menggunakan mysqli_result::fetch_all()
Sama seperti mysqli_store_result(), kaedah ini mendapatkan semula set hasil keseluruhan sebagai tatasusunan PHP, membolehkan gelung dan pengambilan data yang cekap.
3. Menggunakan mysqli_multi_query() untuk Prosedur Tersimpan
Prosedur tersimpan berpotensi untuk mengembalikan berbilang set hasil, setiap satu mengandungi barisnya sendiri. mysqli_multi_query() harus digunakan untuk mengulang melalui set hasil ini, mengendalikannya secara berurutan dan mematuhi protokol MySQL.
Storan Data Alternatif
Untuk mengelakkan kelemahan nested pertanyaan dalam pengambilan data hierarki, pertimbangkan untuk menstruktur semula data untuk pertanyaan yang lebih mudah. Teknik seperti senarai bersebelahan atau set bersarang boleh memudahkan hierarki dengan ketara.
Custom Hack for CodeIgnitor 3.0.3
Untuk pengguna CodeIgnitor 3.0.3, penyelesaian melibatkan pengubahsuaian baris 262 daripada fail mysqli_driver.php. Dengan menambahkan @mysqli_next_result() pada kaedah _execute(), ralat 'command out ofsync' boleh dikurangkan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Arahan tidak segerak' dalam MySQLi Apabila Mendapatkan Data Hierarki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!