[英]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.