Memahami 'Bilangan Pembolehubah Tidak Padan dengan Ralat Bilangan Parameter' dalam mysqli_bind_param()
Apabila menggunakan pernyataan yang disediakan dengan mysqli MySQL sambungan, adalah penting untuk memastikan bahawa pengikatan parameter sejajar dengan sintaks pertanyaan yang disediakan. Kegagalan berbuat demikian boleh mengakibatkan ralat seperti "Bilangan pembolehubah tidak sepadan dengan bilangan parameter dalam pernyataan yang disediakan."
Mari kita mendalami coretan kod yang disediakan untuk mengenal pasti isu:
$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = '?' ORDER by model"); $stmt->bind_param('is', $year, $make); $stmt->execute();
Ralat timbul kerana pernyataan yang disediakan mengandungi pemegang tempat untuk nilai buat yang disertakan dalam petikan: "?'". Dalam pernyataan yang disediakan, tanda soal digunakan sebagai ruang letak untuk nilai yang akan terikat kemudian. Walau bagaimanapun, apabila ia disertakan dalam petikan, ia dianggap sebagai teks literal dan bukannya pemegang tempat.
Membetulkan Penyata Disediakan
Untuk membetulkan isu, alih keluar petikan di sekeliling yang ? pemegang tempat untuk dibuat dalam pernyataan yang disediakan:
$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model"); $stmt->bind_param('is', $year, $make); $stmt->execute();
Sekarang, pernyataan yang disediakan mempunyai satu ? pemegang tempat bagi setiap pemboleh ubah, tahun dan hasil.
Perkara Penting yang Perlu Diingat
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Masalah \'Bilangan Pembolehubah Tidak Padan dengan Bilangan Parameter\' Isu dalam mysqli_bind_param()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!