[英]MySQL: How can I count and limit the number of post submitted by the user every hour?
我目前正在建立一个网站,用户可以在该网站上发帖(例如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 | |
+------------+------------+------+-----+---------+----------------+
如您所见,我的数据库中存储了一个时间(日期时间),它保存了帖子提交的时间。
例:
+------------+------------+------------+----------+
| postID |post_userID | message | time |
+------------+------------+------------+----------+
| 1 | 25 | Hello Mike |1413620228|
| 2 | 26 | Hi John! |1413620332|
+------------+------------+------------+----------+
哦,顺便说一句,我的服务器类型是MySQL。
一种方法是:
select count(*) from post
where post_userID = 25
and time >= date_add(now(), INTERVAL -1 HOUR);
这将为您提供该用户在过去一个小时内的帖子数。
我假设您有一个users
表。 在用户表中创建一个名为last_post_submit_time
的列,然后在用户提交该帖子时在其中保存该时间。 最后,每当用户提交帖子时,检查current time - it's last_post_submit_time >= one hour
。 我希望你能得到...
您可以简单地将时间戳除以3600,然后将其舍入为整数,如下所示:
SELECT
ROUND(time/3600) AS hours_since_epoch
FROM
posts
WHERE
port_userID = <user> AND hours_since_epoch = ROUND(UNIX_TIMESTAMP(NOW())/3600)
这将返回您本小时(大致)发布的列表帖子。
另一种方法是查看用户在过去一个小时内发布了多少:
SELECT
COUNT(*)
FROM
posts
WHERE
port_userID = <user> AND time > UNIX_TIMESTAMP(NOW()) - 3600
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.