Rumah >pangkalan data >tutorial mysql >Ralat Param Bind MySQLi: Mengapa Bilangan Jenis Aksara Saya Tidak Padan dengan Pemegang Tempat Saya?
Ralat Param Ikat: Tidak Padan Nombor
Dalam pernyataan yang disediakan MySQLi, bilangan aksara jenis (cth. "s" untuk rentetan) dalam kaedah bind_param mesti sepadan dengan bilangan ruang letak (cth. "?") dalam SQL pertanyaan.
Ringkasan Masalah
Anda menerima ralat kerana panggilan bind_param dalam kod anda tidak sepadan dengan bilangan ruang letak dalam pernyataan yang disediakan:
$stmt->bind_param("s,s,s,s,s,s,s,...", $project_name, $status, ...);
Ini mungkin disebabkan oleh ketidakpadanan antara bilangan input borang (65) dan bilangan ruang letak dalam pertanyaan.
Format Betul
Format yang betul untuk bind_param adalah seperti berikut:
$stmt->bind_param("type_characters", $variable1, $variable2, ...);
di mana "type_characters" ialah rentetan yang mengandungi satu aksara bagi setiap pemegang tempat dalam pertanyaan, menunjukkan jenis data yang wujud terikat.
Mengira Jenis Aksara
Untuk mengelakkan ketidakpadanan, adalah disyorkan untuk mengira bilangan ruang letak secara manual atau menggunakan ungkapan biasa. Dalam kes anda, anda harus mengesahkan bahawa pernyataan yang disediakan mengandungi 65 ruang letak.
Contoh
Untuk pernyataan yang disediakan yang diubah suai dengan 65 ruang letak, panggilan bind_param yang betul akan be:
$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssss", $project_name, $status, ...);
Petua
Untuk membantu memastikan pengikatan yang betul, pertimbangkan untuk menggunakan kaedah berikut yang mengira bilangan ruang letak dalam pertanyaan SQL:
function countPlaceholders($sql) { return substr_count($sql, '?'); }
Atas ialah kandungan terperinci Ralat Param Bind MySQLi: Mengapa Bilangan Jenis Aksara Saya Tidak Padan dengan Pemegang Tempat Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!