Php MySQL:如何计算和限制用户每小时提交的帖子数量?

Php MySQL:如何计算和限制用户每小时提交的帖子数量?,php,mysql,Php,Mysql,我目前正在建立一个用户可以发布的网站(比如twitter上的推特),但我想限制用户每小时在网站上提交的帖子数量 这是我到目前为止所编写的代码,它输出了用户的帖子总数 $counter = mysql_query("SELECT COUNT(*) AS post_userID FROM post"); $num = mysql_fetch_array($counter); $count = $num["post_userID"]; echo("$count"); if($count > 2

我目前正在建立一个用户可以发布的网站(比如twitter上的推特),但我想限制用户每小时在网站上提交的帖子数量

这是我到目前为止所编写的代码,它输出了用户的帖子总数

$counter = mysql_query("SELECT COUNT(*) AS post_userID FROM post");
$num = mysql_fetch_array($counter);
$count = $num["post_userID"];
echo("$count");

if($count > 2) {
    echo("You have exceeded the posting limits, please try again in 24 hours");
}
我的邮政桌

+------------+------------+------+-----+---------+----------------+
| Field      | Type       | Null | Key | Default | Extra          |
+------------+------------+------+-----+---------+----------------+
| postID     |int(11)     | NO   | PRI | NULL    | auto_increment |
| post_userID|int(11)     | NO   |     | NULL    |                |
| message    |VARCHAR(140)| NO   |     | NULL    |                |
| time       |datetime    | NO   |     | NULL    |                |
+------------+------------+------+-----+---------+----------------+
如你所见,我的数据库中存储了一个时间(datetime),它保存了文章提交的时间

例如:

+------------+------------+------------+----------+
| postID     |post_userID | message    | time     |
+------------+------------+------------+----------+
| 1          |    25      | Hello Mike |1413620228| 
| 2          |    26      | Hi John!   |1413620332|
+------------+------------+------------+----------+

哦,顺便说一句,我的服务器类型是MySQL。

您只需将时间戳除以3600并将其四舍五入为整数,如下所示:

SELECT
    ROUND(time/3600) AS hours_since_epoch
FROM
    posts
WHERE
    port_userID = <user> AND hours_since_epoch = ROUND(UNIX_TIMESTAMP(NOW())/3600)
选择
四舍五入(时间/3600)为小时
从…起
帖子
哪里
端口\u userID=和自\u epoch=ROUND以来的小时数(UNIX\u时间戳(NOW())/3600)
这将返回用户本小时发布的帖子列表(大致)

另一种方法是查看用户在过去一小时内发布了多少内容:

SELECT
    COUNT(*)
FROM
    posts
WHERE
    port_userID = <user> AND time > UNIX_TIMESTAMP(NOW()) - 3600
选择
计数(*)
从…起
帖子
哪里
port_userID=和time>UNIX_时间戳(NOW())-3600

一种方法是:

select count(*) from post
  where post_userID = 25
    and time >= date_add(now(), INTERVAL -1 HOUR);
这将为您提供过去一小时内该用户的帖子数量


我假设您有一个
users
表。在用户表中创建一个名为
last\u post\u submit\u time
的列,然后每当用户提交帖子时,将该时间保存在其中。最后,每当用户提交post检查时,如果
当前时间-最后一次提交时间>=一小时
。我希望您能理解…

我刚刚编辑了一些代码,以使您的代码适应我的代码,并且我已经开始工作:)我不能投票支持您的答案,因为我的声誉分数还不够,但我会选择这个作为答案。谢谢