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));
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!