我为多人游戏托管多个服务器,并且需要一些帮助来创建 PHP MySQL 脚本。 我为游戏服务器编写了脚本,将一些变量输出到 php 脚本。这些变量包括玩家姓名、GUID 号(游戏用户 ID)和其他一些不重要的东西。每次玩家加入服务器时,这些都会发送到 php 脚本。
无论如何,我基本上需要它做的是每次玩家加入服务器时,它都会将玩家名称、guid 和加入日期/时间戳保存到 MySQL 表中的一行。玩家始终只有一个 GUID 代码,这有点像他们的 CD key 。我目前拥有的:if ( $action == "save")
{
$name = mysql_real_escape_string($_GET['name']);
$guid = mysql_real_escape_string($_GET['guid']);
}
mysql_query("INSERT INTO `players` (`name`, `guid`) VALUES ('$name', '$guid') ON DUPLICATE KEY UPDATE `last_joined`=CURRENT_TIMESTAMP")or die(mysql_error());
echo "-10";
die();
现在,这效果很好。但我需要它做的是;如果玩家以不同的名称进入服务器,它将将该实例记录到新行中,如果他们再次以相同的名称出现,它将使用当前时间戳更新同一行。例如,如果他们将名称更改回他们使用的名字,则会更新使用当前时间戳记录该名称的行。
我唯一尝试过的就是将“名称”列设为主键,并在重复条目上更新它。但是,如果我这样做,并且另一个玩家以相同的名称进入服务器,它只会更新最后一个玩家的数据。
因此它需要记录玩家使用的每个用户名。
可能有一个非常简单的解决方案,但我从来没有时间学习 MySQL,我需要尽快完成它。
感谢您的帮助。
最佳答案
使 GUID 成为主唯一键。
然后,不只是插入行,而是首先检查该 guid 是否存在于数据库中,如果存在,则更新该行。如果没有,您可以插入它。
关于php - MYSQL:保存玩家的各种实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27359371/