Rumah >pangkalan data >tutorial mysql >Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat Tidak Padan Pembolehubah Bind?
Ikat Tidak Padan Pembolehubah dalam mysqli_stmt::bind_result() PHP
Apabila cuba log masuk menggunakan borang log masuk PHP dengan pernyataan yang disediakan, anda menghadapi ralat:
mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
Diagnosis:
Ralat ini berlaku apabila bilangan pembolehubah mengikat yang dinyatakan dalam bind_param() tidak sepadan dengan bilangan medan yang dikembalikan oleh yang disediakan kenyataan.
Penyelesaian:
Dalam anda kod:
$stmt->prepare("SELECT username AND password FROM users WHERE username = ?");
Pernyataan yang disediakan mendapatkan semula dua medan, nama pengguna dan kata laluan, tetapi panggilan bind_param() dan bind_result() anda yang seterusnya menyatakan hanya satu pembolehubah bind, $username.
Untuk menyelesaikan ini, anda perlu menentukan berbilang pembolehubah dan medan ikatan dengan betul:
$mysqli->prepare("SELECT username, password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($username, $password);
Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat Tidak Padan Pembolehubah Bind?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!