我想计算用户从过去一小时开始的所有帖子。这是我的代码:
$all_user_recent_posts=mysql_query("select * from user_post where user_id=$userid and where post_time >= DATE_SUB(NOW(),INTERVAL 1 HOUR);");
$count_user_recent_posts=mysql_num_rows($all_user_recent_posts);
此代码不起作用(它的值为 0)。但是当我删除and where post_time >= DATE_SUB(NOW(),INTERVAL 1 HOUR)
时,它确实有效,但它向我显示了用户的所有帖子,而不是上一小时的帖子。法典:
$all_user_recent_posts=mysql_query("select * from user_post where user_id=$userid;");
$count_user_recent_posts=mysql_num_rows($all_user_recent_posts);
正如我在评论中所说,并将其发布为社区维基,因为在代表积分方面不应该从中获得任何好处。
where user_id=$userid and where post_time
这是一个语法错误。
where user_id=$userid and post_time
where
子句使用 ONE 其中,而不是多个并用 AND
或 OR
分隔。
参考:
- http://dev.mysql.com/doc/en/where-optimizations.html
针对您的查询进行错误检查也会告诉您。
- http://php.net/manual/en/function.mysql-error.php
并且还应该根据您的查询进行检查,如果那里也有的话。
将or die(mysql_error())
添加到mysql_query()
错误报告是您可以使用的附加工具。
- http://php.net/manual/en/function.error-reporting.php
此外,post_time
列必须是有效的 MySQL 日期类型。
如果您尝试对varchar
类型进行数学运算,则它不起作用,或者任何不是与日期相关的有效类型。
咨询:
- https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
- http://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html
目前尚不清楚您如何使用mysql_num_rows()
。
以下两个示例将有不同的反应。
if(mysql_num_rows($result) > 0)
和
if(mysql_num_rows($result) == 1)
您在查询中有一个额外的位置近
and where post_time >= DATE_SUB(NOW(),INTERVAL 1 HOUR);
用这个替换你的
$all_user_recent_posts=mysql_query("select * from user_post where user_id=$userid and post_time >= DATE_SUB(NOW(),INTERVAL 1 HOUR);");
希望有帮助:-)