我正在创建一个大厅系统,我正在这样做,以便它可以获取玩家数量并向其添加一个,如果它是 10,它将执行一个不同的查询而不是正常的查询。问题是,我将其中一个值设置为 10 并将其设置为 0 而没有完成查询的另一部分。
代码:
$new_playercount = $match_playercount + 1;
if($new_playercount == 10) {
$query = "UPDATE queue SET match_playercount='".$new_playercount."' AND match_admin_needed='1' WHERE match_id='".$match_id."'";
try {
$stmt = $dbConnect->prepare($query);
$result = $stmt->execute();
}
catch(PDOException $ex) {
die();
}
header('Location: view-lobby/index.php?match_id='.$match_id);
die();
} else {
$query = "UPDATE queue SET match_playercount='".$new_playercount."' WHERE match_id='".$match_id."'";
try {
$stmt = $dbConnect->prepare($query);
$result = $stmt->execute();
}
catch(PDOException $ex) {
die();
}
header('Location: view-lobby/index.php?match_id='.$match_id);
die();
}
如果您需要其他东西,请告诉我,我会尽力提供。但我通过将玩家数量设置为 9 来测试它,然后加入大厅,这将加 1,它应该设置为 10 并且 match_admin_needed 设置为 1,但两者都没有,它实际上将玩家数量重置为 0 ...
最佳答案
因为您的第一个查询不正确。
UPDATE queue SET match_playercount='".$new_playercount."' AND match_admin...
^
如果您更新 2 列,则必须在它们之间使用逗号 (,
),而不是 AND
,后者会导致比较。
当您使用 AND
时,它会比较两侧,然后返回一个 bool 结果,然后将其存储为 0 或 1,而不是更新您的 2 列。
关于php - 查询将列值设置为 0,而它应该是 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31481684/