我有以下准备好的声明。一切都很好...
$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 值的准备好的语句?
最佳答案
您询问 SQL 查询是否包含
WHERE col = ?
会自动转换为
WHERE col IS NULL
通过将 NULL 值绑定(bind)到参数。
答案是否。如果列具有 NULL 值,则它永远不能与任何值进行比较。
您需要为此准备一个不同的查询。
关于php - WHERE 子句中的 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24416929/