Php sql查询PDO bindParam

Php sql查询PDO bindParam,php,mysql,pdo,Php,Mysql,Pdo,我试图将电子邮件和电子邮件密码插入一个已经包含用户名和密码的表中。我正在使用的查询: <?php session_start(); include 'config.php'; $username = $_SESSION['username']; $uname = $_POST['email']; $pass = $_POST['passne']; $sql = "INSERT INTO users(email, emailpassw

我试图将电子邮件和电子邮件密码插入一个已经包含用户名和密码的表中。我正在使用的查询:

<?php

    session_start();
    include 'config.php';   
    $username = $_SESSION['username'];
    $uname = $_POST['email'];
    $pass = $_POST['passne'];

    $sql = "INSERT INTO users(email, emailpassword) VALUES (:uname, :pass) WHERE username = :username";
    $query = $conn->prepare($sql);
    $query->bindParam(':uname', $uname, PDO::PARAM_STR);
    $query->bindParam(':pass', $pass, PDO::PARAM_STR);
    $query->bindParam(':username', $username, PDO::PARAM_STR);
    $query->execute();
    echo "Success";
?>

但它显示了这个错误

致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,了解在C:\xampp\htdocs\b\update.php:14堆栈跟踪:#0 C:\xampp\htdocs\b\update.php(14):PDOStatement->execute()#1{main}中的C:\xampp\htdocs\b\update.php第14行抛出的“WHERE username='thansiya123”附近使用的正确语法

插入用户(电子邮件、电子邮件密码)值(:uname,:pass),其中username=:username

这不是有效的SQL。如果给定用户的记录已经存在,并且您想要设置一些字段,那么您需要的是
更新
查询,而不是
插入

UPDATE users set email = :uname, emailpassword = :pass where username = :username