首页 > 解决方案 > sql查询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'' 附近使用正确的语法:堆栈跟踪:#0 C: \xampp\htdocs\b\update.php(14): PDOStatement->execute() #1 {main} 在第 14 行的 C:\xampp\htdocs\b\update.php 中抛出

标签: phpmysqlpdo

解决方案


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

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

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

推荐阅读