Rumah > Artikel > pangkalan data > Mengapakah `mysqli_stmt::bind_param` Gagal Apabila Pengiraan Parameter dan Pemegang Tempat Tidak Padan?
Ralat biasa yang dihadapi semasa menggunakan mysqli_stmt::bind_param ialah ketidakpadanan antara bilangan parameter yang disediakan dan bilangan ruang letak (tanda soal) dalam pertanyaan SQL yang disediakan. Begini cara untuk memastikan ia diselaraskan dengan betul:
Rentetan definisi jenis dalam bind_param() terdiri daripada jujukan aksara yang mewakili jenis data setiap parameter. Setiap aksara dalam rentetan mesti sepadan dengan pemegang tempat tunggal dalam pertanyaan yang disediakan. Contohnya:
$stmt->bind_param("sss", $one, $two, $three);
Dalam contoh di atas, rentetan takrif jenis "sss" mengandungi tiga aksara 's', menunjukkan bahawa tiga parameter ($satu, $dua, $tiga) adalah semua rentetan. Pertanyaan yang disediakan kemudiannya mesti mengandungi tiga ruang letak untuk memadankan definisi ini, seperti:
$stmt->prepare("INSERT INTO table (one, two, three) VALUES (?,?,?)");
Jika bilangan aksara dalam rentetan definisi jenis tidak sepadan dengan bilangan ruang letak dalam pertanyaan, bind_param() akan menjana ralat yang menyatakan bahawa bilangan pembolehubah tidak sama dengan bilangan ruang letak.
Untuk memastikan pelaksanaan yang betul, sentiasa sahkan bahawa kiraan aksara dalam rentetan definisi jenis sepadan dengan kiraan ruang letak dalam pertanyaan yang disediakan.
Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_param` Gagal Apabila Pengiraan Parameter dan Pemegang Tempat Tidak Padan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!