PDO 中常量值的 bindParam 错误
当尝试使用带有常量值(例如 PDO::PARAM_NULL)的 bindParam 时,开发人员可能会遇到错误“无法通过以下方式传递参数 2”参考。”
出现错误的代码片段
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
解决方案
发生错误是因为bindParam采用变量通过引用,并且在调用时不检索值。绑定常量值的正确方法是bindValue。
更正代码
$stmt->bindValue(':v1', null, PDO::PARAM_INT);
注意:
避免使用bindValue(':param', null, PDO::PARAM_NULL),因为它可能不是可靠。
以上是为什么 PDO 中的常量值'bindParam”失败?的详细内容。更多信息请关注PHP中文网其他相关文章!