Arahan PHP Tidak Segerak: Menyelesaikan Dilema
Apabila bekerja dengan PHP dan MySQLi untuk mendapatkan semula data daripada pangkalan data MySQL, melaksanakan berbilang yang disediakan kenyataan kadangkala boleh membawa kepada ralat, "Perintah tidak segerak, anda tidak boleh menjalankan arahan sekarang."
Punca dan Penyelesaian
Ralat ini berlaku apabila objek sambungan ($mysqli) mempunyai hasil belum selesai daripada pertanyaan sebelumnya. Untuk menyelesaikannya, anda perlu memanggil fungsi next_result() pada objek $mysqli selepas setiap pernyataan yang disediakan.
Pertimbangkan contoh ini:
$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(); $stmt->close(); while ($mysqli->more_results()) { $mysqli->next_result(); } $stmt1 = $mysqli->prepare("SELECT privileges FROM delegations WHERE id = ? LIMIT 1"); $stmt1->bind_param('s', $user_id); // This is where the error occurs $stmt1->execute();
Dalam kod ini, ralat akan menjadi dilemparkan apabila melaksanakan pernyataan kedua ($stmt1). Untuk membetulkannya, tambah baris berikut sebelum melaksanakan $stmt1:
$mysqli->next_result();
Petua Tambahan
Atas ialah kandungan terperinci PHP MySQLi \'Arahan Tidak Segerak\': Bagaimana untuk Membetulkan Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!