PHP:在查询中两次过滤同一列

时间:2010-10-30 18:18:49

标签: php sql mysql

$result = mysql_query("SELECT * FROM users_msgs WHERE uID = '$USER' AND date<'$lastmsg' AND date BETWEEN $Yday AND $today ORDER by date DESC LIMIT 10");

我得到0行,而应该有1 ..

但是我的另一个问题,

 $result = mysql_query("SELECT * FROM users_msgs WHERE uID = '$USER' AND date > $today 
AND date<'$lastmsg'
ORDER by date DESC LIMIT 10");

工作正常,还会过滤同一列两次?

那我的第一个问题是什么问题?

2 个答案:

答案 0 :(得分:0)

如果日期类型是DATE,DATETIME或TIMESTAMP(它应该是,如果不是),则必须将变量放在简单引号之间:date BETWEEN '$Yday' AND '$today'

确保您的变量包含您认为包含的值。此外,您可以测试查询是否返回错误:mysql_query('...') or exit(mysql_error());

答案 1 :(得分:0)

这两个查询使用不同的条件来过滤date列。

两者都要求date小于$lastmsg,但第一个查询(您说不起作用)要求date也大于或等于{{1} }或小于或等于$Yday。第二个查询要求$today大于date。过滤是相反的。

列上有多个过滤条件没有问题 - 您只需要让数据满足要求即可获得结果。