2012-09-05 47 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`