在PHP PDO查询中使用NULL作为条件

时间:2014-07-08 10:41:07

标签: php mysql pdo

这是一个参数化查询:

SELECT
field1,field2,etc1,etc2
FROM my_table WHERE
conditionA=:conditionA AND
conditionB=:conditionB

和我的参数:

array( 'conditionA'=> 5, 'conditionB'=>NULL )

现在在这个理论案例中,conditionB可以是一个值,也可以是null。但是在SQL中,你没有说conditionB=NULL - 你写的是“conditionB IS NULL”。

我该怎么做?首先,如果我在我的参数中传递'conditionB'=>NULL,那么我假设该节点根本没有通过。其次,我是否需要根据conditionB的类型值重写“=”和“IS”之间的查询,或者PDO也能为我做这个吗?

1 个答案:

答案 0 :(得分:0)

Mysql处理NULL的方式与cannot use common comparison operators甚至STRCMP() doesn't do what you need不同。

当我需要在字符串上实现a != b时,我最终使用(a IS NULL XOR b IS NULL) OR (a != b) ...

所以我认为你可以implement 2 different queries based on condition 或延长你的条件

WHERE conditionA=:conditionA
AND (
    (conditionB IS NULL AND :conditionB IS NULL) OR (conditionB=:conditionB)
)