Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Penyata PHP PDO Saya Disediakan Membuang Ralat \'Nombor Parameter Tidak Sah\'?

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

Susan Sarandon
Lepaskan: 2024-11-25 09:25:18
asal
239 orang telah melayarinya

Why Does My PHP PDO Prepared Statement Throw an

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

Apabila mengikat nilai parameter menggunakan kaedah execute(), fungsi menggunakan nilai berikut:

["user_id" => $user_id, "hash" => $hash, "expire" => $future]
Salin selepas log masuk

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

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!

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