Rumah >pembangunan bahagian belakang >tutorial php >Mengapa `bindParam` Gagal dengan Pemalar dalam PDO dan Bagaimana untuk Membetulkannya?

Mengapa `bindParam` Gagal dengan Pemalar dalam PDO dan Bagaimana untuk Membetulkannya?

Susan Sarandon
Susan Sarandonasal
2024-11-23 07:55:19914semak imbas

Why Does `bindParam` Fail with Constants in PDO and How to Fix It?

Melalui Pemalar ke bindParam: Ralat dan Penyelesaian

Dalam PDO, kaedah bindParam membenarkan pembolehubah mengikat kepada parameter pernyataan melalui rujukan. Walau bagaimanapun, apabila cuba untuk mengikat nilai malar seperti PDO::PARAM_NULL, ralat "Tidak boleh lulus parameter 2 melalui rujukan" mungkin berlaku.

Punca Ralat:

bindParam memerlukan pembolehubah sebagai hujah kedua, yang akan diikat pada parameter dengan rujukan. Percubaan untuk menghantar nilai pemalar secara langsung akan mencetuskan ralat kerana pemalar tidak boleh dihantar melalui rujukan.

Penyelesaian:

Untuk mengikat nilai pemalar pada parameter pernyataan, gunakan bindValue kaedah sebaliknya. bindValue mengikat pembolehubah mengikut nilai, bermakna ia menyalin nilai pada masa memanggil kaedah dan bukannya membuat rujukan.

Kod Diubah Suai:

$stmt->bindValue(':v1', null, PDO::PARAM_NULL);

Dengan menggunakan bindValue, anda boleh mengikat nilai malar dengan betul kepada parameter pernyataan tanpa menghadapi ralat "Tidak boleh lulus parameter 2 melalui rujukan". Ingat untuk menggunakan PDO::PARAM_NULL untuk nilai nol, bukan PDO::PARAM_INT atau ''.

Atas ialah kandungan terperinci Mengapa `bindParam` Gagal dengan Pemalar dalam PDO dan Bagaimana untuk Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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