计算用户最近的所有帖子 - 不起作用


Count all recent posts from user - doesn't work

我想计算用户从过去一小时开始的所有帖子。这是我的代码:

$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 其中,而不是多个并用 ANDOR 分隔。

参考:

  • 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);");

希望有帮助:-)