仅在mySQL中更新一组数据的策略

时间:2016-04-12 11:49:24

标签: php mysql

我的网站每天都有一个问题,并且会根据用户获得经验值(XP)的正确答案进行选择。

我的mySQL数据库中有两个表。 1)questionbank 2)用户

  • 每个问题都有一个xp_value(在表格问题库中)
  • 每个用户都有xp(在表用户中)

现在,一旦他们回答了正确的问题,我就会在这个问题中使用if语句:

$mysqli->query("UPDATE users SET xp = xp + '$xp_value' WHERE id = '$userID'");

这样做,当然,我成功地将用户xp更新为新值,但是,问题当然是用户可以回去并无数次回答这个问题以增加他/她的xp。

我正在寻找一种编码策略来仅更新xp ONCE以及用户试图回答它不会给出xp的问题的所有其他时间,只是如果他/她希望再次回顾问题。

欣赏你的时间, oliver_foxx

2 个答案:

答案 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.

进行更新时,您可以轻松检查用户是否已经回答了问题。

您将有两个参考表:用户和问题。问题表将包含每个问题的经验。