加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP PDO预处理语句和MySQL选择字段为空的行

发布时间:2020-12-13 17:51:41 所属栏目:PHP教程 来源:网络整理
导读:我一直在转换一个应用程序,使用PDO准备语句而不是 mysqli,我遇到了一个奇怪的问题.我在数据库中有一些记录,预计字段将为null.不是’null'(字符串),或”(空字符串),但是NULL.我动态地构建我的查询,所以在过去当我在对象中遇到一个null变量时,我会像这样构建查
我一直在转换一个应用程序,使用PDO准备语句而不是 mysqli,我遇到了一个奇怪的问题.我在数据库中有一些记录,预计字段将为null.不是’null'(字符串),或”(空字符串),但是NULL.我动态地构建我的查询,所以在过去当我在对象中遇到一个null变量时,我会像这样构建查询:
WHERE fieldName is null;

当字段为空时,将获得预期的结果.

现在使用PDO,我的查询没有返回任何结果,我没有收到任何错误.它只是没有返回我期望的记录.当我回显构建的查询并直接在MySQL中运行它时,我得到了预期的结果,但在应用程序中没有返回结果.

我尝试过的一些事情包括构建如下所示的查询:

WHERE fieldName is null;

要么

WHERE fieldName <=> null;

我也尝试过标准的准备声明:

WHERE fieldName = :fieldName

然后绑定这些语句:

$stmt->bindParam(":$field",$value);
$stmt->bindParam(":$field",$value,PDO::PARAM_NULL);
$stmt->bindParam(":$field",null,PDO::PARAM_NULL);
$stmt->bindValue(":$field",PDO::PARAM_INT);

任何有关这方面的帮助将不胜感激.我的PHP版本是5.3.10,MySQL是5.5.22.作为一个附带问题,我仍然不清楚bindParam和bindValue之间的区别,所以如果在你的答案中包含它是有道理的,我会非常感谢对这个主题的一些澄清……

事实证明这是对这个问题的一些回应的组合: How do I insert NULL values using PDO?(正如约翰指出的那样)

我需要将where子句更改为:

WHERE fieldName is :fieldName;

然后传递一个field =>数组执行函数的值:

$binds = array();
foreach ($wheres as $where) {
    $field = $where['field'];
    $value = $where['value'];
    $binds[":$field"] = $value;
}
$stmt->execute($binds);

即使更改了我的where子句,查询也无法与bindValue一起使用.有人知道为什么绑定不起作用,但另一种方法呢?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读