Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Saya Mendapat Ralat \'SQLSTATE[HY093]: Nombor parameter tidak sah\' dalam Kod PDO PHP Saya?

Mengapa Saya Mendapat Ralat \'SQLSTATE[HY093]: Nombor parameter tidak sah\' dalam Kod PDO PHP Saya?

Barbara Streisand
Lepaskan: 2024-11-24 15:50:17
asal
1019 orang telah melayarinya

Why Am I Getting a

Ralat: Nombor Parameter Tidak Sah dalam PHP PDOException

Apabila cuba untuk melaksanakan fungsi add_persist, pembangun mungkin menghadapi ralat "SQLSTATE[HY093]: Nombor parameter tidak sah." Ralat ini berpunca daripada pengikatan parameter yang salah dalam pertanyaan SQL.

Dalam kod yang disediakan, penyataan $sql cuba mengemas kini baris dalam jadual persist dengan melaksanakan perintah INSERT dan ON DUPLICATE KEY UPDATE. Walau bagaimanapun, terdapat percanggahan dalam pengikatan parameter dalam panggilan $stm->execute. Khususnya, parameter :hash muncul dua kali, tetapi menurut dokumentasi PDO, setiap penanda parameter unik mesti diikat sekali sahaja pada nilai.

Untuk menyelesaikan isu ini, pertanyaan $sql harus diubah suai untuk memasukkan yang berbeza penanda parameter untuk setiap nilai yang dihantar, seperti berikut:

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

Selain itu, panggilan $stm->execute hendaklah termasuk pengikatan untuk kedua-dua parameter :hash dan :hash2:

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

Dengan menangani isu pengikatan parameter ini, fungsi add_persist akan melaksanakan pertanyaan SQL dengan betul tanpa mencetuskan ralat "Nombor parameter tidak sah".

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'SQLSTATE[HY093]: Nombor parameter tidak sah\' dalam Kod PDO PHP Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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