将 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
。
我的数据库中只有一条记录,"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
。