Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah PDO Melemparkan Ralat \'Tidak boleh lulus parameter melalui rujukan\' dan Bagaimana Saya Boleh Membetulkannya Menggunakan bindValue?

Mengapakah PDO Melemparkan Ralat \'Tidak boleh lulus parameter melalui rujukan\' dan Bagaimana Saya Boleh Membetulkannya Menggunakan bindValue?

DDD
Lepaskan: 2024-12-23 20:29:11
asal
608 orang telah melayarinya

Why Does PDO Throw a

Mengelakkan Ralat "Tidak boleh lulus parameter melalui rujukan" dengan bindParam

Apabila bekerja dengan PDO, anda mungkin menghadapi ralat yang membingungkan "Tidak boleh lulus parameter dengan rujukan" apabila menggunakan bindParam dengan nilai malar seperti PDO::PARAM_NULL.

Sebab ralat ini terletak pada sifat bindParam. Tidak seperti bindValue, yang mengikat nilai pada parameter pada masa panggilan, bindParam mengikat pembolehubah melalui rujukan. Ini bermakna bindParam menjangkakan pembolehubah yang boleh diubah suai semasa pelaksanaan pertanyaan. Menggunakan nilai malar seperti PDO::PARAM_NULL, yang tidak boleh diubah suai, mencetuskan ralat.

Untuk menyelesaikan isu ini, penyelesaiannya ialah menggunakan bindValue dan bukannya bindParam untuk nilai tetap. bindValue menerima nilai sebagai parameter kedua dan tidak memerlukan rujukan.

Berikut ialah contoh menggunakan bindValue dengan betul:

$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)');
$stmt->bindValue(':v1', null, PDO::PARAM_INT);
Salin selepas log masuk

Dalam kes ini, bindValue memberikan nilai null kepada :v1 parameter dengan jenis data PDO::PARAM_INT.

Perhatikan bahawa semasa dokumentasi PHP mencadangkan menggunakan bindValue(':param', null, PDO::PARAM_NULL), ia mungkin tidak berfungsi dalam semua kes. Oleh itu, adalah disyorkan untuk menggunakan PDO::PARAM_INT atau jenis data yang sesuai.

Atas ialah kandungan terperinci Mengapakah PDO Melemparkan Ralat \'Tidak boleh lulus parameter melalui rujukan\' dan Bagaimana Saya Boleh Membetulkannya Menggunakan bindValue?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan