Mengapa Pernyataan Disediakan MySQL Saya Gagal dengan Ralat \'Bilangan elemen dalam rentetan definisi jenis tidak sepadan dengan bilangan pembolehubah ikatan\'?

Barbara Streisand
Lepaskan: 2024-11-19 00:16:02
asal
652 orang telah melayarinya

Why Does My MySQL Prepared Statement Fail with a

Misteri Pembolehubah Ikatan Tidak Padan

Persoalannya berkisar tentang ralat yang dihadapi semasa mengikat parameter untuk pernyataan yang disediakan MySQL yang luas. Isunya terletak pada ketidakpadanan antara bilangan penunjuk jenis "s" dalam kaedah bind_param dan bilangan tanda soal (?) dalam rentetan pertanyaan.

Memahami bind_param()

bind_param() ialah kaedah mysqli yang menggantikan tanda soal (?) dalam pertanyaan yang disediakan dengan sebenar data. Setiap aksara dalam rentetan definisi jenis (cth., "s" untuk rentetan) sepadan dengan tanda soal dan data yang akan diikat.

Memastikan Bilangan Pembolehubah Ikatan

Perkara kritikal yang perlu diingat ialah bilangan aksara dalam rentetan definisi jenis (cth., "s,s,s") mesti sepadan dengan bilangan tanda soal dengan tepat (?) dalam rentetan pertanyaan. Sebagai contoh, pertanyaan dengan 3 tanda soal memerlukan rentetan definisi jenis dengan 3 aksara "s".

Memeriksa Kod

Dalam kod PHP yang diberikan, pertanyaan rentetan mengandungi 65 tanda soal, tetapi kaedah bind_param() menggunakan "s,s,s,s,s,s,s,s" (sejumlah hanya 8 aksara "s"). Percanggahan ini membawa kepada mesej ralat: "Bilangan elemen dalam rentetan definisi jenis tidak sepadan dengan bilangan pembolehubah ikatan."

Untuk Menyelesaikan Isu:

Kepada betulkan isu, sahkan bahawa bilangan aksara "s" dalam kaedah bind_param() sepadan dengan bilangan tanda soal (?) dalam pertanyaan rentetan. Dalam kes ini, kaedah bind_param() hendaklah digantikan dengan:

$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", ...);
Salin selepas log masuk

Nota Tambahan:

  • Watak dalam rentetan definisi jenis tidak seharusnya dipisahkan dengan koma.
  • Format yang diterangkan dalam halaman manual untuk mysqli_stmt::bind_param() hendaklah diikuti.

Atas ialah kandungan terperinci Mengapa Pernyataan Disediakan MySQL Saya Gagal dengan Ralat \'Bilangan elemen dalam rentetan definisi jenis tidak sepadan dengan bilangan pembolehubah ikatan\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan