Rumah > pangkalan data > tutorial mysql > Mengapa Menggunakan Parameter Dinamakan Dua Kali Dalam Sisipan PDO...PADA Pertanyaan KEMASKINI KUNCI PENDUA Menyebabkan Ralat 'Nombor Parameter Tidak Sah'?

Mengapa Menggunakan Parameter Dinamakan Dua Kali Dalam Sisipan PDO...PADA Pertanyaan KEMASKINI KUNCI PENDUA Menyebabkan Ralat 'Nombor Parameter Tidak Sah'?

Susan Sarandon
Lepaskan: 2024-12-10 14:57:09
asal
696 orang telah melayarinya

Why Does Using the Same Named Parameter Twice in a PDO INSERT...ON DUPLICATE KEY UPDATE Query Cause a

PHP PDOException: Nombor Parameter Tidak Sah

Masalah:

Apabila membina pertanyaan INSERT dengan klausa ON DUPLICATE KEY UPDATE, menggunakan penanda parameter bernama dua kali dalam kaedah execute() boleh membawa kepada ralat "SQLSTATE[HY093]: Nombor parameter tidak sah".

Penyelesaian:

Untuk menyelesaikan isu ini, tetapkan penanda parameter yang berbeza untuk setiap nilai dalam kaedah execute(). Berikut ialah kod yang dikemas kini:

$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

Penjelasan:

Dokumentasi PDO menyatakan bahawa "Anda tidak boleh menggunakan penanda parameter bernama dengan nama yang sama dua kali dalam pernyataan yang disediakan ." Ini kerana setiap nilai yang dihantar kepada pertanyaan mesti mempunyai penanda parameter yang unik. Dengan memberikan penanda parameter yang berbeza untuk nilai cincang yang dikemas kini (:hash2), isu itu diselesaikan.

Atas ialah kandungan terperinci Mengapa Menggunakan Parameter Dinamakan Dua Kali Dalam Sisipan PDO...PADA Pertanyaan KEMASKINI KUNCI PENDUA Menyebabkan 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