我有以下准备好的陈述。一切都很好......
$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值的预准备语句?
答案 0 :(得分:1)
您询问是否包含
的SQL查询 WHERE col = ?
将自动转换为
WHERE col IS NULL
通过将NULL值绑定到参数。
答案是否。如果列具有NULL值,则它永远不能与任何内容进行比较。
您需要一个不同的准备好的查询。