Rumah >pangkalan data >tutorial mysql >Ralat Param Bind MySQLi: Mengapa Bilangan Jenis Aksara Saya Tidak Padan dengan Pemegang Tempat Saya?

Ralat Param Bind MySQLi: Mengapa Bilangan Jenis Aksara Saya Tidak Padan dengan Pemegang Tempat Saya?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 10:05:13291semak imbas

MySQLi Bind Param Error: Why Does My Number of Type Characters Mismatch My Placeholders?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn