Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Tidak Padan Mengikat' dalam Borang Log Masuk PHP?
Mysqli_stmt::bind_result() Ralat: Mengikat Tidak Padan
Apabila cuba melaksanakan borang log masuk PHP menggunakan pernyataan yang disediakan, pengguna mungkin menghadapi ralat berikut:
mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
Ralat ini menunjukkan percanggahan antara bilangan pembolehubah yang dinyatakan dalam bind_result() dan bilangan medan yang dikembalikan oleh pernyataan yang disediakan. Untuk menyelesaikan isu ini, periksa coretan kod berikut:
$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();
Punca Punca:
Sintaks yang salah dalam pernyataan SELECT ialah punca ralat. Sintaks yang betul hendaklah:
SELECT username, password FROM users WHERE username = ?
Penyelesaian:
Isu boleh diselesaikan dengan mengasingkan medan dalam pernyataan SELECT dengan koma dan bukannya "DAN. " Kod yang betul disediakan di bawah:
$mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
Dengan memastikan sintaks yang betul dalam pernyataan SELECT dan memerhatikan bilangan pembolehubah bind sepadan dengan bilangan medan dalam pernyataan yang disediakan, ralat mysqli_stmt::bind_result() boleh dicegah.
Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Tidak Padan Mengikat' dalam Borang Log Masuk PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!