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
926 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!

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