我的网站每天都有一个问题,并且会根据用户获得经验值(XP)的正确答案进行选择。
我的mySQL数据库中有两个表。 1)questionbank 2)用户
现在,一旦他们回答了正确的问题,我就会在这个问题中使用if语句:
$mysqli->query("UPDATE users SET xp = xp + '$xp_value' WHERE id = '$userID'");
这样做,当然,我成功地将用户xp更新为新值,但是,问题当然是用户可以回去并无数次回答这个问题以增加他/她的xp。
我正在寻找一种编码策略来仅更新xp ONCE以及用户试图回答它不会给出xp的问题的所有其他时间,只是如果他/她希望再次回顾问题。
欣赏你的时间, oliver_foxx
答案 0 :(得分:0)
跟踪一天?正如你所说的每日一个问题,XP应该只在最后一次更新不是“今天”时才会被授予。
$mysqli->query("UPDATE users SET xp = xp + '$xp_value', `day` = DATE(NOW()) WHERE id = '$userID' AND `day` < DATE(NOW()) ");
答案 1 :(得分:0)
您将需要一个新表,您可以说:用户X在这个时间和日期回答问题A.
进行更新时,您可以轻松检查用户是否已经回答了问题。
您将有两个参考表:用户和问题。问题表将包含每个问题的经验。