Menyelesaikan masalah "Commands Out of Sync" Ralat dalam MySQLi
Dalam MySQLi, cuba untuk melaksanakan pertanyaan baharu sebelum mendapatkan semula semua baris daripada yang sedang berjalan pertanyaan boleh membawa kepada ralat "Arahan tidak segerak". Ralat ini menunjukkan ketidakpadanan antara jangkaan klien dan pelayan, di mana pelayan menjangkakan klien mengambil semua baris sebelum mengeluarkan pertanyaan berikutnya.
Memahami Masalah
Untuk memahami punca ralat ini, adalah penting untuk mengetahui bahawa tingkah laku lalai MySQLi adalah untuk mendapatkan hasil baris demi baris menggunakan mysqli_fetch_* fungsi. Apabila pertanyaan baharu dilaksanakan sementara baris daripada pertanyaan sebelumnya masih tersedia, pelanggan dan pelayan tidak segerak.
Penyelesaian Kemungkinan
1. Pra-ambil Keputusan:
Gunakan mysqli_store_result() untuk pra-mengambil semua baris daripada pertanyaan awal. Ini menimbal hasil pada bahagian klien, membolehkan anda melaksanakan pertanyaan berikutnya tanpa menyebabkan isu penyegerakan.
2. Kembalikan Semua Keputusan sebagai Tatasusunan:
Sebagai alternatif, anda boleh menggunakan mysqli_result::fetch_all() untuk mendapatkan semula semua baris sebagai tatasusunan PHP. Pendekatan ini juga menghapuskan keperluan untuk mengambil baris demi baris, menyelesaikan masalah "tidak segerak".
3. Mengendalikan Prosedur Tersimpan:
Prosedur tersimpan boleh mengembalikan beberapa set hasil. Dalam kes sebegini, adalah perlu untuk mengulangi set hasil menggunakan mysqli_multi_query() dan mysqli_next_result(). Ini memastikan bahawa pelanggan mengambil semua baris daripada setiap set hasil sebelum melaksanakan pertanyaan baharu.
Pertimbangan Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Arahan Tidak Segerak' dalam MySQLi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!