使用PDO绑定SOMETIMES null值
问题描述:
There is only one record in my database, and the "action_taken" column is set to NULL. How the hell do I get PDO to find it???
If I type the query directly into SQL it works as expected.
Note: This is just a test script to illustrate my problem. Most the time the value passed will be a string, but occasionally the value will be 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 :(';
}
我的数据库中只有一条记录,“action_taken”列设置为NULL。 我怎么能让PDO找到它? p>
如果我直接在SQL中输入查询,它就会按预期工作。 p>
注意: 这只是一个测试脚本来说明我的问题。 大多数时间传递的值都是一个字符串,但偶尔值为NULL。 p>
include('include / mysql.php');
$ sql ='SELECT * FROM返回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 \ n {
echo'NOOOO:(';
}
code> pre>
div>
答
Basically, you can't say "equal to null". It always has to be IS
null:
$sql = 'SELECT * FROM returns WHERE action_taken IS :action';
You'd be better off not using NULL
at all, if at all possible.