Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO错误在SteamAuth上复制数据_Php - Fatal编程技术网

Php PDO错误在SteamAuth上复制数据

Php PDO错误在SteamAuth上复制数据,php,Php,我目前正在使用steam auth,然后将其翻译为将代码集成到MySQL中。 不幸的是,我收到一条消息,通知我该表已经存在。 我想有一个代码,允许我更新数据,如果需要的话,但不幸的是,我不能在谷歌上找到。 这是我在PDO中的代码 <?php function newPDO() { $host = 'x'; $db = 'x'; $user = 'x'; $pass = 'x'; $dsn = "mysql:host=$host;dbname

我目前正在使用steam auth,然后将其翻译为将代码集成到MySQL中。 不幸的是,我收到一条消息,通知我该表已经存在。 我想有一个代码,允许我更新数据,如果需要的话,但不幸的是,我不能在谷歌上找到。 这是我在PDO中的代码

<?php

function newPDO() {
    $host = 'x';
    $db   = 'x';
    $user = 'x';
    $pass = 'x';


    $dsn = "mysql:host=$host;dbname=$db";
    $opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $pdo = new PDO($dsn, $user, $pass, $opt);
    return $pdo;
}

{
    $pdo = newPDO();
    $stmt = $pdo->prepare('INSERT INTO players (uid, name, avatar) VALUES (:uid, :name, :avatar)');
    $stmt->execute(['uid' => $_SESSION['steam_steamid'], 'name' => $_SESSION['steam_personaname'], 'avatar' => $_SESSION['steam_avatar']]);
    if($pdo->lastInsertId()) {
        //login successfull
        return true;
    } else {
        //registration failed
        return false;
    }
}

if(!isset($_SESSION['steamid'])) {
    loginbutton("rectangle"); //login button

}  else {
    include ('steamauth/userInfo.php');
    //Protected content
    echo $steamprofile['personaname'];
    echo '<img src="'.$steamprofile['avatar'].'" title="" alt="" />'; // Display their avatar!

    logoutbutton("rectangle");
}    
?>

最后,这是php告诉我的错误代码

致命错误:未捕获异常“PDOException”并显示消息“SQLSTATE[23000]:完整性约束冲突:1062 C:\xampp\htdocs\inc\login.php中键“uid”的重复条目“76561197992043760”。php:23堆栈跟踪:#0 C:\xampp\htdocs\inc\login.php(23):PDOStatement->execute(Array)#1 C:\xampp\htdocs\index.php(52):include('C:\xampp\docs…)#2{main}在第23行的C:\xampp\htdocs\inc\login.php中抛出


你能帮我解决这个问题吗

您可以先用SELECT验证是否存在字段

如果不存在,则使用INSERT创建行


否则用update更新记录

您的表中已有一行的uid为
76561197992043760
我知道,我想说是否可能pdo overwrite?overwrite=update而不是INSERT您是说要修改现有行吗?如果我想使用update,我的代码会是什么样子?