Ralat Nombor Parameter Tidak Sah dalam PHP PDO
Apabila cuba untuk melaksanakan pernyataan yang disediakan menggunakan PDO, anda mungkin menghadapi ralat "SQLSTATE[HY093 ]: Nombor parameter tidak sah." Isu ini timbul disebabkan oleh penggunaan penanda parameter yang salah.
Fungsi yang disediakan add_persist menggunakan pernyataan yang disediakan berikut:
INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash
Apabila mengikat nilai parameter menggunakan kaedah execute(), fungsi menggunakan nilai berikut:
["user_id" => $user_id, "hash" => $hash, "expire" => $future]
Walau bagaimanapun, pernyataan yang disediakan mengandungi penanda parameter pendua untuk cincang, yang tidak dibenarkan oleh PDO. Untuk menyelesaikan isu ini, kami perlu menetapkan penanda parameter unik untuk setiap nilai yang dihantar.
Kod yang diperbetulkan ialah:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2"; $stm = $db->prepare($sql); $stm->execute( array("user_id" => $user_id, "hash" => $hash, "expire" => $future, "hash2" => $hash) );
Parameter tambahan :hash2 memastikan tiada penanda parameter pendua dalam pernyataan yang disediakan, menyelesaikan ralat.
Atas ialah kandungan terperinci Mengapa Penyata PHP PDO Saya Disediakan Membuang Ralat \'Nombor Parameter Tidak Sah\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!