2012-09-05 148 views
0

我做了一個簡單的查詢來更新我的表使用PHP,但無法找出錯誤。MySQL更新語法錯誤

我的功能:

function editData($id, $data) { 
    $message =""; 
    $query= "UPDATE blood_data SET name='{$data['name']}', group='{$data['group']}', 
      address1='{$data['address']}', district='{$data['district']}', 
      age='{$data['age']}', sex='{$data['sex']}', phone='{$data['phone']}', 
      mobile='{$data['mobile']}', email='{$data['email']}' 
      WHERE id='{$id}' "; 

    if(mysql_query($query)) { 
     $message ="Data Successfully Updated "; 
    }else { 
     die("failed: " . mysql_error());  
    } 

    return $message; 

} 

這是在函數中傳遞:

$dataArray = [ 
    'name'=>$_POST['full_name'], 
    'group'=>$_POST['group'], 
    'sex'=>$_POST['sex'], 
    'age'=>$_POST['age'], 
    'address'=>$_POST['address'], 
    'district'=>$_POST['district'], 
    'email'=>$_POST['email'], 
    'phone'=>$_POST['phone'], 
    'mobile'=>$_POST['mobile'] 
    ]; 

    $msg = editData($idUploader, $dataArray); 

而拋出的錯誤信息是:

失敗:你在你的SQL錯誤句法;檢查對應於你的MySQL服務器版本的手冊,以便在'group ='O +',address1 ='dsd',district ='sdfs',age = '22',sex ='male',phone ='23423'at line 1

回答

7

您需要引用您的字段名稱,因爲group是保留的MySQL關鍵字。例如:

UPDATE blood_data SET `name` = '{$data['name']}', `group` = '{$data['group']}' ... 

看看使用PDO,因爲它會爲你做它幫助prvent SQL注入,以及許多其他好處。更不用說mysql_*功能已被棄用。

0

你應該避免這樣的代碼,你的程序容易受到SQL注入攻擊。考慮使用mysqli和準備語句。

由於馬特·漢弗萊在他的答案已經提到的,羣被保留MySQL的關鍵字,但是當你在反引號披露這樣你可以使用它:

`group`