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
Lepaskan: 2024-12-08 07:22:11
asal
329 orang telah melayarinya

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";
Salin selepas log masuk

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";
Salin selepas log masuk

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

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

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!

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