PHP / MySQL / PDO绑定null参数不起作用

前端之家收集整理的这篇文章主要介绍了PHP / MySQL / PDO绑定null参数不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在以下代码中绑定null参数时遇到问题
$nullVariable = NULL;
$sql = new PDO('MysqL:host=' . $Server,$User,$Password);
$sql->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
$statement = $sql->prepare("SELECT * FROM Table WHERE Binary16Column = :uuid");
$statement->bindParam(":uuid",$nullVariable,PDO::PARAM_NULL);
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC);

结果变量将是一个空数组.如果我不使用参数并将我的查询修改为“WHERE Binary16Column IS NULL”,则返回预期的行数.所以问题必须在于我如何处理参数,而不是我的SQL查询.

我的代码比上面列出的更复杂,我需要能够使用可能为null的参数变量,因此检查查看变量是否为null并且运行不同的查询不太理想.从技术上讲,我有自己的设置参数的功能,这是我检查变量的内容是否为空,并适当地绑定参数,所以我不必编写不必要的查询数.如果变量包含有效数据,并且参数类型为PARAM_LOB,则查询工作也可以正常工作.

有谁知道我做错了什么?非常感谢!

@H_301_10@
阅读 three-valued logic. NULL不是一个值;它是缺少值的标记,因此NULL永远不会等于任何东西,包括它自己.

但是,有一个零安全比较运算符,也称为“太空船运算符”,它确实认为两个空值是等价的.

WHERE Binary16Column <=> :uuid

……应该按照你的预期行事.

猜你在找的PHP相关文章