我要做的是显示过去30天的文章,但我现有的代码一直给我一个mysql_fetch_assoc错误,然后追溯到我的查询
这是代码:
$sql = mysql_query("SELECT *
FROM table
WHERE DATE (datetime) = (CURDATE() - INTERVAL 7 DAY)
ORDER BY ID DESC");
while ($runrows = mysql_fetch_array($sql))
有人能指点我如何让代码正常运行吗?这是错误
警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源
答案 0 :(得分:2)
我认为您的'
条款中不需要WHERE
。而不是
WHERE DATE (datetime) = 'CURDATE() - INTERVAL 30 DAY'
尝试:
WHERE DATE (datetime) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
答案 1 :(得分:0)
试试这个:
$sql = mysql_query("SELECT * FROM table WHERE DATE (datetime) > DATE_SUB(CURDATE(), INTERVAL 7 DAY) ORDER BY ID DESC");
我改变了两件事:
DATE_SUB()
减去日期。>=
代替=
查找过去一周的所有日期。答案 2 :(得分:0)
类似的东西:
$sql = mysql_query("SELECT *
FROM table
WHERE DATE BETWEEN '" . date('Y-m-d',strtotime('now')) . "' AND '" . date('Y-m-d',strtotime('-30 days')) . "'
ORDER BY ID DESC"
);
应该得到这样的东西:
SELECT *
FROM table
WHERE DATE BETWEEN '2011-07-26' AND '2011-06-26'
ORDER BY ID DESC
请注意,date('Y-m-d')
是在数据库中记录日期的方式。所以改变它就像你的数据库一样。