检查单个mysql表行并仅向其应用函数

时间:2017-01-26 23:24:14

标签: php mysql

我有一张包含不同用户的表格(因身份而异)http://imgur.com/a/CXuJX

每当我触发运行php文件以处理下一轮时,我都会让这部分代码负责更新该特定表:

$get_turn_update = mysqli_query($connect, "SELECT * FROM turn_update") or die (mysqli_error($connect));
while ($user_turn_update = mysqli_fetch_assoc($get_turn_update)) {
    if ($user_turn_update['residenceTurns'] > 0) {
        $residencesBuilt = ceil($user_turn_update['residence'] / $user_turn_update['residenceTurns']);
        $residences_turn_update = mysqli_query($connect, "UPDATE turn_update SET residenceTurns = residenceTurns - 1") or die (mysqli_error($connect));
        $residences_update = mysqli_query($connect, "UPDATE turn_update SET residence = residence - '".$residencesBuilt."'") or die (mysqli_error($connect));
        $residences_built_update = mysqli_query($connect, "UPDATE buildings SET residence = residence + '".$residencesBuilt."'") or die (mysqli_error($connect));
    }
}

基本上,“居住”栏是在剩余转弯过程中建造的住宅数量 - “住宅转弯”栏。

问题在于,例如,当身份为3的用户将其住宅“建成”,并且住宅趋势减1时,其他用户(在本例中为id 4),即使他们没有任何住宅在施工中获得相同数量的转弯(-1)和住宅数量(取决于其数量)。

例如,如果我们从这些参数开始:

  • id |住所| residenceTurns
  • 3 | 10 | 2
  • 4 | 0 | 0

在1回合我们将有

  • id |住所| residenceTurns
  • 3 | 5 | 1
  • 4 | -5 | -1

2轮我们将

  • id |住所| residenceTurns
  • 3 | 0 | 0
  • 4 | -10 | -2

我需要的是,如果一行(一个用户)有一定数量的住宅建筑,它只影响他,并为每个用户单独处理。

谢谢

1 个答案:

答案 0 :(得分:4)

您没有在更新语句中使用WHERE子句,因此,您每次都在更新整个表。通过提供WHERE子句将查询限制在特定的住所,例如:

UPDATE residence SET turns = turns - 1 WHERE id = residence['id']

我在手机上,这是伪代码,但这应该会帮助你。