Rumah >pangkalan data >tutorial mysql >Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan'?
mysqli_stmt::bind_result() Ralat: Pembolehubah Bind Memadankan dengan Medan Pernyataan Disediakan
Apabila cuba menggunakan pernyataan yang disediakan untuk mekanisme log masuk dalam PHP, anda mungkin menghadapi ralat: "mysqli_stmt::bind_result(): Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan dalam pernyataan yang disediakan." Ini menunjukkan percanggahan antara bilangan pembolehubah yang anda ikat dalam keputusan anda dan bilangan medan yang dijangkakan oleh pernyataan yang disediakan.
Kod dan Analisis Salah:
kod yang disediakan menunjukkan isu:
$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?"); $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username);
Ralat timbul kerana kata kunci "DAN" telah digunakan secara salah dalam SELECT klausa. Daripada memisahkan medan dengan "DAN," anda harus menggunakan koma.
Kod dan Penjelasan Betul:
Untuk menyelesaikan ralat ini, ubah suai klausa SELECT seperti berikut :
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
Dengan pengubahsuaian ini, kenyataan yang disediakan kini menjangkakan dua medan akan dikembalikan: nama pengguna dan kata laluan. Anda kemudiannya boleh mengikat dua pembolehubah dengan selamat menggunakan mysqli_stmt::bind_result().
$stmt->bind_result($username, $password);
Dengan memastikan bilangan pembolehubah ikatan sepadan dengan bilangan medan dalam pernyataan yang disediakan, anda boleh menghalang "Nombor pembolehubah bind tidak sepadan dengan bilangan medan dalam ralat pernyataan yang disediakan.
Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!