php - MYSQL:保存玩家的各种实例

标签 php mysql

我为多人游戏托管多个服务器,并且需要一些帮助来创建 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/

相关文章:

php - 对 SQL 列进行分组并计算结果

javascript - 自动完成两个字段没有任何反应

php - 如何将 Php 连接到 monetdb 服务器

php - 在不刷新页面的情况下刷新 mysql 驱动的下拉列表的内容

PHP 5.5.24 MySQLi 持久连接返回 'couldn' t fetch mysqli'

php - MySQL查询结果之和

php - 如何使用 DOM 和 XPath 从页面中抓取链接?

php - linux (ubuntu) apache www 文件夹访问问题

mysql - 使用生成大量计算统计信息的 MariaDB View - 如何移动到计算表?

mysql - 如何根据整数 (ID) 数组仅返回满足所有条件的行?