6

我有以下查询:

//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 个月内发现副作用......

4

2 回答 2

1

正如评论PHP Docs所说,

bindValue(':PARAM1', null, PDO::PARAM_INT);

或者

$myNull = null;
$stmt->bindParam(':PARAM1', $myNull, PDO::PARAM_NULL);
于 2012-09-28T01:27:40.030 回答
1

如果你想绑定参数将为空值,那么你需要使用 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);

希望这可以帮助。

于 2012-09-28T01:27:54.177 回答