PHP PDO更新SQL语法错误

PHP PDO更新SQL语法错误,php,mysql,pdo,Php,Mysql,Pdo,我是新来的PDO,我正在尝试构建自己的CRUDS应用程序。我已经创建了CRD,但我一直在更新用户信息。似乎我的语法有问题,但我彻底检查了文档,无法找出代码的错误。它传递给我这个错误: ERROR:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解可在“Doe,email”附近使用的正确语法=johndoe@gmail.com,位置=纽约市,其中id=1'位于第1行 这是我的密码: include('database.

我是新来的
PDO
,我正在尝试构建自己的CRUDS应用程序。我已经创建了
CRD
,但我一直在更新用户信息。似乎我的语法有问题,但我彻底检查了文档,无法找出代码的错误。它传递给我这个错误:

ERROR:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解可在“Doe,email”附近使用的正确语法=johndoe@gmail.com,位置=纽约市,其中id=1'位于第1行

这是我的密码:

include('database.inc.php');

if (isset($_POST['submit'])) {

$id = $_POST['userId']; // 1
$name = $_POST['employee_name']; // John Doe
$email = $_POST['email']; // johndoe@gmail.com
$location = $_POST['location']; // New York City

    try {

     $query = "UPDATE users SET employee_name=$name, email=$email, location=$location WHERE id=$id";
     $statement = $conn->prepare($query);
     $statement->execute();

     header('Location: ../index.php');

     } catch(PDOException $e) {

    echo 'ERROR: ' .$e->getMessage();

     }

}

尝试用单引号(')包围语句中的变量


代码的问题在于没有在SQL中的字符串值周围加引号。但是您应该使用参数化查询,而不是将变量替换到SQL中。这解决了引用问题,也防止了SQL注入

$query = "UPDATE users SET employee_name=:name, email=:email, location=:location WHERE id=:id";
$statement = $conn->prepare($query);
$statement->execute(array(':name' => $name, 
                          ':email' => $email,
                          ':location' => $location,
                          ':id' => $id));

我可以问一下,你在检查哪些文档吗?@ShankarDamodaran,你可能觉得你的评论有点过头了?好的,现在可以了。谢谢你的帮助!OP:这不是你准备查询的方式——你仍然容易受到攻击SQLi@ShankarDamodaran请允许我告诉您,即使是编辑过的版本也没有太多意义,因为OP没有使用mysql ext.Yep,在变量周围加上单引号对我很有效。谢谢你的帮助。糟糕的答案比适合OP的答案要糟糕1000倍。不回答而伤害他人真是太遗憾了好的先生,非常感谢你的建议。我真的很感激。
$query = "UPDATE users SET employee_name=:name, email=:email, location=:location WHERE id=:id";
$statement = $conn->prepare($query);
$statement->execute(array(':name' => $name, 
                          ':email' => $email,
                          ':location' => $location,
                          ':id' => $id));