更新数据库,不再在列表中添加相同的用户名


update database,not add same username in list again

    $update_list = "";
foreach($keys as $k)
{
    if(!isset($_GET[$k]) || empty($_GET[$k]))
    {
        exit("error");
    }
    $update_list .= ($k != "username") ? "{$k}={$_GET[$k]},":"";
}
$update_list = substr($update_list, 0, -1);
$con = new PDO("mysql:host=localhost;port=3306;dbname=highscores", "root", "");
$row_list = implode(",", $keys);
$question_marks = substr(str_repeat("?,", sizeof($keys)), 0, -1);
$query = "INSERT INTO `highscores` ({$row_list}) VALUES ({$question_marks}) ON DUPLICATE KEY UPDATE {$update_list}";

当我注销时,它会在列表中添加另一个同名的用户名。我不想的是,当用户注销时,它将更新统计信息,而不是在列表中创建具有更新统计信息的相同用户名。这是怎么回事。

MVG.

SQL 查询不应该是 INSERT INTO 而是 UPDATE 尝试编写类似以下内容的内容:

$query = "UPDATE `highscores`SET({$question_marks}) WHERE username=usernameToUpdate";

将"用户名更新"替换为与您要更改的"高分"相关的用户名。最好使用"userId"而不是用户名,但无论哪种方式都可以完成,

我的猜测是你实际上还没有在数据库中设置主键。 仅当您定义了唯一键时,才会触发ON DUPLICATE KEY。所有主键都是唯一的。

每个表都应该有一个主键。虽然从技术上讲不是必需的,但如果您希望查询的性能不差,则需要有一个主键。

如果我错了,并且您确实设置了主键,请尝试在用户名上设置唯一索引。 这应该可以解决您的问题。