簡體   English   中英

MySQL:如何計算和限制用戶每小時提交的帖子數量?

[英]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);

這將為您提供該用戶在過去一個小時內的帖子數。

鏈接到SQL Fiddle

我假設您有一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM