Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah Penyata Disediakan PDO Saya Membuang Ralat \'Nombor Parameter Tidak Sah\'?

Mengapakah Penyata Disediakan PDO Saya Membuang Ralat \'Nombor Parameter Tidak Sah\'?

Barbara Streisand
Lepaskan: 2024-12-15 02:46:16
asal
960 orang telah melayarinya

Why Does My PDO Prepared Statement Throw an

Pengecualian PDO: Nombor Parameter Tidak Sah

Apabila cuba untuk melaksanakan fungsi add_persist, ralat "SQLSTATE[HY093]: Nombor parameter tidak sah" ditemui. Fungsi ini memasukkan data ke dalam jadual persisten dan mengemas kini nilai cincang jika kunci pendua ditemui.

Setelah meneliti kod, ia menjadi jelas bahawa isu itu terletak pada pernyataan SQL. Pernyataan cuba untuk mengikat parameter :hash dua kali: sekali untuk operasi INSERT dan sekali lagi untuk operasi ON DUPLICATE KEY UPDATE.

Untuk menyelesaikan ralat ini, pernyataan SQL mesti diubah suai untuk memasukkan penanda parameter unik untuk setiap nilai dihantar ke penyata apabila ia dilaksanakan. Pernyataan dan kod pelaksanaan yang diubah suai adalah seperti berikut:

$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
$stm->execute(array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash));
Salin selepas log masuk

Menurut dokumentasi PHP, menggunakan penanda parameter bernama yang sama dua kali dalam pernyataan yang disediakan adalah tidak sah. Setiap nilai mesti mempunyai penanda parameter tersendiri untuk mengelakkan ralat ini.

Atas ialah kandungan terperinci Mengapakah Penyata Disediakan PDO Saya Membuang Ralat \'Nombor Parameter Tidak Sah\'?. 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