我有以下查询:
//query:
$query = "
SELECT field1 FROM table
WHERE
field2 = :PARAM1
AND ...
AND fieldx = :PARAM1X";
//params:
$params = array();
$params [":PARAM" . $i] = NULL;
//prepare and execute:
$o = $cnx->prepare($query);
$o->execute($params);
我如何用NULL
值绑定参数? PDO会自动将= :PARAM1
更改为IS NULL
吗?为了说清楚,尝试计算WHERE field = null
在mysql中不起作用,永远不会返回任何内容。我们必须使用WHERE field IS NULL
代替。
这就是我现在正在处理的问题。
我必须说我的第一次测试是积极的,但我真的不想在生产环境中发现6个月的副作用......
答案 0 :(得分:1)
来自PHP Docs
的评论说,
bindValue(':PARAM1', null, PDO::PARAM_INT);
或
$myNull = null;
$stmt->bindParam(':PARAM1', $myNull, PDO::PARAM_NULL);
答案 1 :(得分:1)
如果你想绑定params将为null值,那么你需要使用bindValues
bindValue(':param', null, PDO::PARAM_INT);
所以对于你的查询,它可以是这样的。
$sth = $dbh->prepare('SELECT field1 FROM table WHERE field2 = :PARAM1 AND fieldx = :PARAM1X');
$sth->bindValue(':PARAM1', null, PDO::PARAM_INT);
希望这会有所帮助。