将 SOMETIMES 空值与 PDO 绑定

Bind SOMETIMES null value with PDO

我的数据库中只有一条记录,"action_taken"列设置为NULL。我到底怎么才能让 PDO 找到它???

如果我直接在 SQL 中输入查询,它会按预期工作。

注意:这只是一个测试脚本来说明我的问题。大多数情况下传递的值将是一个字符串,但偶尔该值将是 NULL。

include ('include/mysql.php');

$sql = 'SELECT * FROM returns WHERE action_taken = :action';
$sth = $dbh->prepare($sql);
$param = null;
$sth->bindValue(':action', $param, PDO::PARAM_STR);
$sth->execute();
if ($sth->rowCount())
    {
    echo 'FOUND YOU!';
    }
else
    {
    echo 'NOOOO :(';
    }

基本上,你不能说"equal to null"。它始终必须是 IS null:

$sql = 'SELECT * FROM returns WHERE action_taken IS :action';

如果可能的话,你最好根本不使用 NULL