Rumah >pangkalan data >tutorial mysql >Mengapakah `bindParam` Gagal dengan Nilai Malar dalam PDO?

Mengapakah `bindParam` Gagal dengan Nilai Malar dalam PDO?

Barbara Streisand
Barbara Streisandasal
2024-12-05 03:21:101025semak imbas

Why Does `bindParam` Fail with Constant Values in PDO?

Ralat bindParam dengan Nilai Malar dalam PDO

Apabila cuba menggunakan bindParam dengan nilai tetap, seperti PDO::PARAM_NULL, pembangun boleh menghadapi ralat "Tidak boleh lulus parameter 2 oleh rujukan."

Snippet Kod dengan Ralat

try {
    $dbh = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
}
catch(PDOException $e)
{
    ...
}
$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)');
$stmt->bindParam(':v1', PDO::PARAM_NULL); // --> Here's the problem

Penyelesaian

Ralat berlaku kerana bindParam mengambil pembolehubah dengan rujukan dan tidak mendapatkan nilai apabila dipanggil. Kaedah yang betul untuk mengikat nilai malar ialah bindValue.

Kod Dibetulkan

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

Nota:

Elakkan menggunakan bindValue(':param', null, PDO::PARAM_NULL), kerana ia mungkin bukan boleh dipercayai.

Atas ialah kandungan terperinci Mengapakah `bindParam` Gagal dengan Nilai Malar dalam PDO?. 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
Artikel sebelumnya:Alat Pengurusan Projek ITArtikel seterusnya:Alat Pengurusan Projek IT