Memahami Ralat dalam mysqli_stmt::bind_result()
Apabila bekerja dengan pernyataan yang disediakan dalam sambungan MySQLi PHP, anda mungkin menghadapi ralat " mysqli_stmt::bind_result(): Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan dalam pernyataan yang disediakan." Isu ini berlaku apabila bilangan pembolehubah yang dijangkakan oleh pertanyaan anda tidak sepadan dengan bilangan pembolehubah yang terikat pada hasil.
Menganalisis Kod yang Diberikan
Dalam kod yang disediakan , isunya ialah dengan pernyataan SELECT yang digunakan untuk menyediakan pernyataan:
$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?");
Dalam pernyataan ini, klausa SELECT menyatakan dua medan, "nama pengguna" dan "kata laluan." Walau bagaimanapun, hanya satu pembolehubah bind digunakan ($nama pengguna):
$stmt->bind_param('s', $username);
Menyelesaikan Isu
Untuk membetulkan isu, klausa SELECT harus diubah suai untuk memasukkan hanya medan yang terikat dengan hasilnya. Dalam kes ini, hanya "nama pengguna" diperlukan:
$stmt = $mysqli->prepare("SELECT username FROM users WHERE username = ?");
Dengan pengubahsuaian ini, bilangan medan dalam pertanyaan akan sepadan dengan bilangan pembolehubah ikatan dan ralat akan diselesaikan.
Nota Tambahan
Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_result()` Gagal Apabila Bilangan Pembolehubah Bind Tidak Padan dengan Bilangan Medan yang Dipilih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!