Rumah >pangkalan data >tutorial mysql >Mengapa Penyata PHP PDO Saya Disediakan Membuang 'Nombor Parameter Tidak Sah'?

Mengapa Penyata PHP PDO Saya Disediakan Membuang 'Nombor Parameter Tidak Sah'?

Linda Hamilton
Linda Hamiltonasal
2024-12-08 07:22:11330semak imbas

Why Does My PHP PDO Prepared Statement Throw

Pengecualian PDO: Nombor Parameter Tidak Sah dalam PHP

Menghadapi ralat "SQLSTATE[HY093]: Nombor parameter tidak sah" apabila cuba menggunakan PHP PDO? Punca asas mungkin berkaitan dengan penggunaan parameter dalam pernyataan yang disediakan.

Perihalan Masalah:

Dalam coretan kod yang disediakan:

$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash";

Ada penanda parameter ": hash2" tiada dalam klausa KEMASKINI. Percanggahan ini membawa kepada pengecualian PDO kerana PDO memerlukan penanda parameter unik untuk setiap nilai untuk diikat dalam pernyataan.

Penyelesaian:

Laraskan pertanyaan SQL pernyataan yang disediakan kepada yang berikut:

$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";

Sehubungan itu, ubah suai pernyataan execute() untuk memasukkan Penanda parameter ":hash2":

$stm->execute(
    array(
        ":user_id" => $user_id,
        ":hash" => $hash,
        ":expire" => $future,
        ":hash2" => $hash
    )
);

Latar Belakang:

Kaedah prepare() PDO memerlukan penanda parameter unik untuk mengikat nilai apabila memanggil execute(). Penggunaan penanda parameter berulang adalah tidak dibenarkan dan memberikan berbilang nilai kepada parameter yang sama tidak disokong dalam klausa seperti klausa "IN()".

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