您可以在一個MySQL的查詢做。假設你想每天添加10個寶石,限制爲100個寶石。這裏是我的嘗試:
CREATE TABLE `Gems` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`gems` int(11),
`gCount` varchar(45),
`gDate` date,
PRIMARY KEY (`user_id`)
) ;
INSERT INTO `Gems` VALUES
(1,220,'100','2016-04-09'),
(2,310,'50','2016-04-09'),
(3,110,'20','2016-04-08');
| user_id | gems | gCount | gDate |
|---------|------|--------|------------|
| 1 | 220 | 100 | 2016-04-09 |
| 2 | 320 | 60 | 2016-04-09 |
| 3 | 110 | 20 | 2016-04-08 |
因此,你需要的邏輯是:
if gDate >= CURDATE and gCount < 100 and gCount+10 <= 100
{
gems = gems + 10;
gCount = gCount + 10;
}
else if gDate < CURDATE
{
gDate = CURDATE;
gCount = 10;
gems = gems + 10;
}
和等效MySQL的更新聲明,將做的工作:
UPDATE Gems
SET
gems = IF((gDate >= CURDATE() AND gCount < 100 AND gCount+10 <= 100)
OR gDate < CURDATE(),
gems + 10,
gems),
gCount = IF((gDate >= CURDATE() AND gCount < 100 AND gCount+10 <= 100),
gCount + 10,
IF(gDate < CURDATE(), 10, gCount)),
gDate = IF(gDate < CURDATE(), CURDATE(), gDate)
WHERE
user_id = <user_id>;
你絕對不應該這樣做它在客戶端或人們會找到解決方法,並給自己「寶石」 – Terminus
我沒有任何交易的想法,只是虛擬curency被用作下載限制。 – Aco
我同意第一條評論。您將不得不在服務器上執行此操作,並且您需要使用user_id和日期跟蹤每次點擊。當用戶點擊你時,檢查該日期的計數('SELECT COUNT(*)FROM點擊WHERE member ='$ user_id'和日期> todayAtMidnight')。如果計數小於10,那麼您可以向點擊表添加新條目,並像您最初計劃的那樣更新揹包表。 – markwatsonatx