Rumah >pangkalan data >tutorial mysql >Mengapakah PDO Melemparkan Ralat 'Tidak Boleh Melepasi Parameter 2 dengan Rujukan', dan Bagaimana Saya Boleh Membetulkannya?
Memahami Ralat "Tidak Boleh Melepasi Parameter 2 melalui Rujukan" dalam bindParam PDO
Dalam konteks penggunaan PDO untuk interaksi pangkalan data, seseorang boleh menghadapi ralat "Tidak boleh lulus parameter 2 dengan rujukan." Ralat ini timbul apabila cuba menetapkan parameter kepada nilai malar menggunakan kaedah bindParam. Untuk menyelesaikan masalah ini, adalah penting untuk memahami perbezaan antara bindParam dan bindValue.
bindParam mengambil pembolehubah melalui rujukan. Dalam kes nilai malar, tiada rujukan untuk mengikat, yang membawa kepada ralat. Sebaliknya, bindValue memerlukan nilai secara langsung dan menyalinnya ke dalam pernyataan, menghapuskan keperluan untuk rujukan.
Oleh itu, untuk menyelesaikan ralat, disyorkan untuk menggunakan bindValue dan bukannya bindParam untuk nilai tetap. Contoh berikut menunjukkan penggunaan yang betul:
$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)'); $stmt->bindValue(':v1', null, PDO::PARAM_INT); // Using bindValue for constant value
Adalah penting untuk ambil perhatian bahawa menggunakan bindValue dengan PDO::PARAM_NULL mungkin tidak berfungsi untuk semua kes. Jika anda menghadapi sebarang masalah, cuba gunakan nilai malar seperti 0 atau rentetan kosong sebaliknya.
Atas ialah kandungan terperinci Mengapakah PDO Melemparkan Ralat 'Tidak Boleh Melepasi Parameter 2 dengan Rujukan', dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!