2015-11-08 56 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

解釋爲什麼他們應該刪除括號,會使每個人受益;包括未來訪問者的問題。 –

相關問題