SQL查询PDO bindParam

时间:2019-12-08 18:31:12

标签: php mysql pdo

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

<?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中的第1行的'WHERE username ='thansiya123'附近使用:14堆栈跟踪:#0 C: \ xampp \ htdocs \ b \ update.php(14):PDOStatement-> execute()#1 {main}在第14行的C:\ xampp \ htdocs \ b \ update.php中抛出

1 个答案:

答案 0 :(得分:1)

  

INSERT INTO users(email, emailpassword) VALUES (:uname, :pass) WHERE username = :username

这是无效的SQL。如果给定用户的记录已经存在,并且您想要设置一些字段,则需要一个UPDATE查询,而不是INSERT

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