Apabila melaksanakan berbilang kenyataan yang disediakan dalam PHP/MySQLi, anda mungkin menghadapi ralat "Perintah tidak segerak". Ini timbul daripada ketidakpadanan antara bilangan pernyataan yang dilaksanakan dan bilangan hasil yang sedang diproses. Untuk menangani isu ini, pertimbangkan cerapan dan penyelesaian berikut:
Ralat "Out of Sync" berlaku apabila klien MySQL menerima lebih banyak data daripada yang dijangkakan untuk pernyataan tertentu. Ini berlaku apabila menggunakan mysqli::query dengan bendera MYSQLI_USE_RESULT. Bendera ini mengarahkan MySQL untuk tidak menimbal hasil sepenuhnya, menyebabkan perintah berikutnya menjadi tidak segerak.
Dalam kod yang anda sediakan, dua pernyataan yang disediakan digunakan untuk mendapatkan data daripada pangkalan data. Pernyataan pertama mendapatkan semula maklumat pengguna, manakala yang kedua mendapatkan kembali keistimewaan. Walau bagaimanapun, anda menghadapi ralat semasa melaksanakan pernyataan kedua.
Untuk menyelesaikan ralat, anda mesti membebaskan keputusan pernyataan pertama sebelum melaksanakan yang kedua. Ini dicapai dengan memanggil fungsi mysqli_stmt->free_result(). Selain itu, menggunakan mysqli->next_result() selepas setiap pertanyaan memastikan bahawa sebarang hasil tambahan telah diproses.
Berikut ialah contoh cara menyelesaikan isu:
$stmt = $mysqli->prepare("SELECT id, username, password, firstname, lastname, salt FROM members WHERE email = ? LIMIT 1"); $stmt->bind_param('s', $loweredEmail); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($user_id, $username, $db_password, $firstname, $lastname, $salt); $stmt->fetch(); $stmt->free_result(); $mysqli->next_result(); // Ensure no stray results are present $stmt1 = $mysqli->prepare("SELECT privileges FROM delegations WHERE id = ? LIMIT 1"); $stmt1->bind_param('s', $user_id); $stmt1->execute(); $stmt1->store_result(); $stmt1->bind_result($privileges); $stmt1->fetch();
Atas ialah kandungan terperinci PHP MySQLi Ralat \'Arahan Tidak Segerak\': Bagaimana untuk Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!