php - 我如何在我的数据库中插入或更新一个条目,如果更新我如何添加到现有值

标签 php mysql sql json database

我有一个数据库跟踪通过 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/

相关文章:

php - MySQL 和 PHP - 即使变量为空也插入?

php - 在 ajax 添加到购物车上显示特定 Woocommerce 购物车商品数量的甜蜜警报

Javascript 依赖项未通过 Ajax 加载

mysql - 如何编写sql代码来获取2个日期之间的数据?

mysql - INSERT INTO table 与 INSERT INTO table SET?

php - 数据库中有数据,为什么 JSON 显示 NULL 数据?

mysql - 运行 mysql 程序 select 操作产生许多结果集

php - 缓慢的 MySQL 性能和 sleep 查询

php - 连接2个表得到2条相关记录 Mysql PHP

mysql - INNER JOIN 的问题我没有得到想要的结果