Why I am getting Cannot pass parameter 2 by reference error when I am using bindParam with a constant value?
Solution 1:
You need to use bindValue
, not bindParam
bindParam
takes a variable by reference, and doesn't pull in a value at the time of calling bindParam
. I found this in a comment on the PHP docs:
bindValue(':param', null, PDO::PARAM_INT);
P.S. You may be tempted to do this bindValue(':param', null, PDO::PARAM_NULL);
but it did not work for everybody (thank you Will Shaver for reporting.)
Solution 2:
When using bindParam()
you must pass in a variable, not a constant. So before that line you need to create a variable and set it to null
$myNull = null;
$stmt->bindParam(':v1', $myNull, PDO::PARAM_NULL);
You would get the same error message if you tried:
$stmt->bindParam(':v1', 5, PDO::PARAM_NULL);