Mengikat Ketidakpadanan Pembolehubah dalam mysqli_stmt::bind_result()
Dalam PHP, apabila melaksanakan pernyataan yang disediakan menggunakan mysqli_stmt::bind_result(), bilangan pembolehubah mengikat mesti sepadan dengan bilangan medan dalam set hasil. Jika ia tidak sepadan, ralat "mysqli_stmt::bind_result(): Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan dalam pernyataan yang disediakan" akan dilemparkan.
Untuk menyelesaikan isu ini, pastikan nombor tersebut pembolehubah bind dalam bind_result() sejajar dengan bilangan lajur yang dikembalikan oleh pertanyaan. Pertimbangkan kod PHP berikut:
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username); // Incorrect number of bind variables $stmt->fetch();
Dalam contoh ini, pernyataan yang disediakan mendapatkan semula dua lajur, nama pengguna dan kata laluan. Walau bagaimanapun, hanya satu pembolehubah bind, $username, dinyatakan dalam bind_result(). Untuk membetulkannya, tambahkan pembolehubah bind kedua untuk $password:
$stmt->bind_result($username, $password); // Correct number of bind variables
Sintaks untuk pernyataan SELECT ialah: SELECT field1, field2, ... fieldN FROM table_name WHERE .... Setiap medan mesti diasingkan dengan koma, bukan syarat DAN.
Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat Apabila Bilangan Pembolehubah Ikatan Tidak Padan dengan Lajur Set Keputusan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!