我有一个包含不同用户的表(按 ID 不同)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));
}
}
基本上,'residence' 列是将在剩余回合中 build 的住宅数量 - 'residenceTurns' 列。
问题是,例如,当 id 为 3 的用户“ build ”了他的住宅,并且 residenceTurns 减 1 时,其他用户(在本例中为 id 4),即使他们没有任何住宅在建筑中获得相同数量的转弯 (-1) 和住宅数量(取决于数量)。
例如,如果我们从这样的参数开始:
- 编号 |住所 |住所转
- 3 | 10 | 2
- 4 | 0 | 0
1 回合内我们将拥有
- 编号 |住所 |住所转
- 3 | 5 | 1
- 4 | -5 | -1
2 回合后我们将拥有
- 编号 |住所 |住所转
- 3 | 0 | 0
- 4 | -10 | -2
我需要的是,如果一行(一个用户)有一定数量的住宅建筑,它只影响他并且为每个用户单独处理。
谢谢
最佳答案
您没有在更新语句中使用 WHERE 子句,因此,您每次都在更新整个表。通过提供 WHERE 子句将您的查询限制在特定的住所,例如:
UPDATE residence SET turns = turns - 1 WHERE id = residence['id']
我在手机上,这是伪代码,但应该能帮到你。
关于php - 检查单个 mysql 表行并仅对它们应用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41884790/