首页 >数据库 >mysql教程 >为什么 PDO 中的常量值'bindParam”失败?

为什么 PDO 中的常量值'bindParam”失败?

Barbara Streisand
Barbara Streisand原创
2024-12-05 03:21:101017浏览

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

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn