Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Pembolehubah Ikatan Tidak Padan'?
mysqli_stmt::bind_result(): Pembolehubah Bind Tidak Padan lwn Medan Penyata Disediakan
Soalan:
Apabila cuba melaksanakan pernyataan yang disediakan dengan mysqli_stmt, saya menghadapi ralat: "mysqli_stmt::bind_result(): Bilangan pembolehubah bind tidak sepadan dengan bilangan medan dalam pernyataan yang disediakan." Mengapa saya menerima ralat ini?
Contoh Kod:
$mysqli = new mysqli("localhost", "root", "", "security"); $stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username); $stmt->fetch();
Jawapan:
Ralat yang anda hadapi berlaku apabila bilangan pembolehubah yang dinyatakan dalam bind_result() tidak sepadan dengan bilangan lajur yang dikembalikan oleh pertanyaan pernyataan yang disediakan. Dalam contoh anda, anda cuba untuk mengikat dua pembolehubah kepada pertanyaan yang mengembalikan hanya satu lajur.
Untuk menyelesaikan isu ini, pertanyaan harus ditulis dalam format yang betul untuk operasi. Sintaks yang betul untuk memilih berbilang medan adalah untuk memisahkannya dengan koma, bukan DAN:
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
Setelah pertanyaan diperbetulkan, kaedah bind_result() boleh digunakan untuk mengikat pembolehubah dengan betul kepada hasil:
$stmt->bind_result($username, $password);
Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Pembolehubah Ikatan Tidak Padan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!