我的网站每天都有一个问题,根据选择的正确答案,用户可以获得经验点(XP)。
我的mySQL数据库中有两个表。1) 题库2)用户
- 每个问题都有一个xp_value(在题库表中)
- 每个用户都有xp(表中用户)
现在,一旦他们回答了正确的问题,我就有了一个带有以下查询的if语句:
$mysqli->query("UPDATE users SET xp = xp + '$xp_value' WHERE id = '$userID'");
这样做,当然,我成功地将用户的xp更新到了一个新的值,然而,问题当然是用户可以无限次地返回并回答这个问题,以增加他/她的xp。
我正在寻找一种编码策略,只更新xp一次,而在其他所有时候,用户都试图回答它不会给出xp的问题,只是在他/她愿意的时候再次审查这个问题。
感谢您抽出时间,oliver_foxx
记录当天的情况?正如你所说,这是一个日常问题,XP应该只在上次更新不是"今天"时授予。
$mysqli->query("UPDATE users SET xp = xp + '$xp_value', `day` = DATE(NOW()) WHERE id = '$userID' AND `day` < DATE(NOW()) ");
您将需要一个新的表,在其中您可以说:用户X已经回答了问题a。
在进行更新时,您可以很容易地检查用户是否已经回答了问题。
您将有两个参考表:用户和问题。问题表将包含每个问题的经验。