2015-11-08 131 views
7

我在PDO是新的,写一个更新查询:PDO UPDATE:语法错误或访问冲突

$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);  

并获得:

SQLSTATE [42000]:语法错误或访问冲突: 1064您的SQL语法中有一个 错误;检查对应于您 MariaDB的服务器版本使用附近“(uname = ‘[email protected]’,role =‘2’,fname =‘全名’,email =‘拉姆’正确的语法手册 位于第1行

谁能告诉我什么是错在我的代码

这里是我的表结构:

enter image description here

+0

支架用于子查询https://dev.mysql.com/doc/refman/5.7/en/subqueries.html –

回答

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"; 

检查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] 
+2

解释为什么他们应该删除括号,会使每个人受益;包括未来访问者的问题。 –

相关问题