PDO UPDATE:语法错误或访问冲突

A. *_*lam 7 php mysql sql pdo

我是PDO的新手,编写更新查询:

$sql = "UPDATE `users` 
           SET(`uname` = :uname,
               `role` = :role,
               `fname` = :fname,
               `email` = :email,
               `mobile1` = :mobile1,
               `mobile2` = :mobile2,
               `education` = :education,
               `division` = :division,
               `district` = :district,
               `sub_district` = :sub_district,
               `address` = :address,
               `looking_for` = :looking) 
         WHERE `id` = :id";

            //$sql = "UPDATE `users` SET(`uname`=?,`role`=?,`fname`=?,`email`=?,`mobile1`=?,`mobile2`=?,`education`=?,`division`=?,`district`=?,`sub_district`=?,`address`=?,`looking_for`=?) WHERE `id`=?";
            $st = $conn->prepare($sql);
            //$res['sql'] = $st->queryString;
            $params = array(
                ':uname' => $uname, 
                ':role' => $role, 
                ':fname' => $fname, 
                ':email' => $email, 
                ':mobile1' => $mobile1, 
                ':mobile2' => $mobile2, 
                ':education' => $edu, 
                ':division' => $division, 
                ':district' => $district, 
                ':sub_district' => $sub_district, 
                ':address' => $address, 
                ':looking' => $looking, 
                ':id' => $id
            );

            //$res['params'] = $params;
            $r = $st->execute($params);     
Run Code Online (Sandbox Code Playgroud)

得到:

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误; 查看与您的MariaDB服务器版本对应的手册,以便在'(uname='rahman @ abc.def',role='2',fname='全名',email='rahm'在第1行附近使用正确的语法

谁能告诉我我的代码有什么问题?

这是我的表结构:

在此输入图像描述

Luk*_*zda 10

删除SET部分周围的括号:

$sql  =  "UPDATE `users` 
          SET  `uname` = :uname,
               `role` = :role,
               `fname` = :fname,
               `email` = :email,
               `mobile1` = :mobile1,
               `mobile2` = :mobile2,
               `education` = :education,
               `division` = :division,
               `district` = :district,
               `sub_district` = :sub_district,
               `address` = :address,
               `looking_for` = :looking 
         WHERE `id` = :id";
Run Code Online (Sandbox Code Playgroud)

检查UPDATE syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
Run Code Online (Sandbox Code Playgroud)

  • 关于他们为什么要删除括号的解释会使每个人受益; 包括未来访问者的问题. (2认同)