WHERE子句中为NULL

时间:2014-06-25 19:26:28

标签: php mysql sql pdo prepared-statement

我有以下准备好的陈述。一切都很好......

$stmt=$conn->prepare('UPDATE t1 SET c1=? WHERE c2=? AND c3!=?');
$stmt->execute(array(1,2,3));

但是现在我希望使用相同的预准备语句,但在WHERE子句中包含NULL值。

$stmt->execute(array(1,NULL,NULL));

这会解决UPDATE t1 SET c1=1 WHERE c2=NULL AND c3!=NULL吗?不是正确的查询UPDATE t1 SET c1=1 WHERE c2 IS NULL AND c3 IS NOT NULL吗?如何在WHERE子句中使用一个允许NULL和非NULL值的预准备语句?

1 个答案:

答案 0 :(得分:1)

您询问是否包含

的SQL查询
 WHERE col = ?

将自动转换为

 WHERE col IS NULL

通过将NULL值绑定到参数。

答案是。如果列具有NULL值,则它永远不能与任何内容进行比较。

您需要一个不同的准备好的查询。