我有一个数据库跟踪通过 JSON 传入的游戏记录。如果 ID 不存在,我只是想创建一个新记录,但如果它存在,我想更新值。因此,如果一个玩家之前有 10 次击杀,然后他们玩了另一场游戏并增加了 10 次击杀,我希望他们的总数根据他们的 ID 更新为 20 次击杀。 我的代码是最好的方法吗?
<?php
$con = mysqli_connect("localhost", "root", "","playerstats") or die('Could not connect: ' . mysqli_error());
error_log("You messed up!", 3, "my-errors.log");
//$raw_data = file_get_contents('php://input');
$raw_data = file_get_contents('test.json');
$data = json_decode($raw_data, true);
$SteamID = $data['SteamID'];
$Username = $data['Username'];
$Kills = $data['Kills'];
$Deaths = $data['Deaths'];
$Rank = $data['Rank'];
$sql = "INSERT INTO playerinfo(SteamID, Username, Kills, Deaths, Rank)
VALUES('$SteamID', '$Username', '$Kills', '$Deaths', '$Rank')
ON DUPLICATE KEY UPDATE Kills += $Kills, Deaths += $Deaths";
if(!mysqli_query($con,$sql))
{
die('Error : ' . mysqli_error($con));
}
?>
最佳答案
MySQL 没有+=
运算符,您必须使用column = column + value
。此外,没有必要重复 $Kill
和 $Deaths
变量,您可以在 ON DUPLICATE 中使用
子句引用本应插入该列的值。VALUES(columnName)
KEY UPDATE
$sql = "INSERT INTO playerinfo(SteamID, Username, Kills, Deaths, Rank)
VALUES('$SteamID', '$Username', '$Kills', '$Deaths', '$Rank')
ON DUPLICATE KEY UPDATE
Kills = Kills + VALUES(Kills),
Deaths = Deaths + VALUES(Deaths)";
您还应该学习如何使用准备好的语句而不是将变量替换到查询中。
关于php - 我如何在我的数据库中插入或更新一个条目,如果更新我如何添加到现有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309836/