Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Mendapat Ralat \'Bilangan Pembolehubah Ikatan Tidak Padan\' dalam Penyata Disediakan MySQLi?
Bilangan Pembolehubah Ikatan Tidak Padan dalam Sisipan Penyata Disediakan
Apabila melaksanakan pernyataan INSERT menggunakan pernyataan yang disediakan MySQLi, pengguna mungkin menghadapi ralat: " Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan dalam pernyataan yang disediakan."
Isu ini timbul apabila bilangan pembolehubah ikatan yang disediakan dalam kaedah bind_param() tidak sejajar dengan bilangan ruang letak dalam pertanyaan INSERT . Contohnya, pertimbangkan coretan kod di bawah:
if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) { /* Bind parameters s - string, b - blob, i - int, etc */ $stmt->bind_param("ss", $user, $pw); /* Execute it */ $stmt->execute(); /* Bind results */ $stmt->bind_result($user, $pw); /* Close statement */ $stmt->close(); $userId = $conn->insert_id; }
Dalam kod ini, pernyataan INSERT mempunyai dua ruang letak (?): satu untuk pengguna dan satu untuk pas. Walau bagaimanapun, kaedah bind_param() mengikat dua pembolehubah ($pengguna, $pw) kepada ruang letak. Ini mengakibatkan ralat tidak padan.
Penyelesaian adalah untuk mengalih keluar panggilan kaedah bind_result() memandangkan pernyataan INSERT tidak mengembalikan sebarang hasil. Kod yang dikemas kini di bawah memasukkan data ke dalam jadual dengan betul:
if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) { /* Bind parameters s - string, b - blob, i - int, etc */ $stmt->bind_param("ss", $user, $pw); /* Execute it */ $stmt->execute(); /* Close statement */ $stmt->close(); $userId = $conn->insert_id; }
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'Bilangan Pembolehubah Ikatan Tidak Padan\' dalam Penyata Disediakan MySQLi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!