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

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

Barbara Streisand
发布: 2024-12-05 03:21:10
原创
931 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板