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

Php 仅更新mySQL中一组数据一次的策略,php,mysql,Php,Mysql,我的网站每天都有一个问题,根据选择的正确答案,用户可以获得经验点(XP) 我的mySQL数据库中有两个表。1) 问题库2)用户 每个问题都有一个xp_值(在表questionbank中) 每个用户都有xp(表中用户) 现在,一旦他们回答了正确的问题,我就有一个if语句和这个查询: $mysqli->query("UPDATE users SET xp = xp + '$xp_value' WHERE id = '$userID'"); 这样做,当然,我成功地将用户xp更新为一个新值,

我的网站每天都有一个问题,根据选择的正确答案,用户可以获得经验点(XP)

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

  • 每个问题都有一个xp_值(在表questionbank中)
  • 每个用户都有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()) ");
$mysqli->query(“更新用户设置xp=xp+'$xp\u值',`day`=DATE(NOW()),其中id='$userID'和`day`
您将需要一个新表,在该表中您可以说:用户X在这个时间和日期回答了问题a

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


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

要做到这一点,你需要跟踪他们回答的问题。你需要一个DB设计,你可以说用户X回答了问题a,获得了经验B。这样,在进行更新时,你首先要检查用户是否已经回答了该问题,并跟踪用户已经回答的所有问题。为此,您需要一张单独的桌子。当用户返回并再次回答相同的问题时,您应该对照该表进行检查。如果该用户有该问题的条目,请给该用户任何xp分数。您只更新用户表,如何知道用户得到了哪个问题的答案?只是想澄清一下你们建议的表的结构。新表中有问题的用户,每个问题都有自己的列,并根据其是否得到回答而获得0/1的值?对于日常问题来说,这似乎是一个好主意,但是,如果新问题的上载时间存在延迟,则可能会出现问题。但我会照样运行并更新此评论。谢谢!