MySQL更新语法错误

mon*_*onk 0 php mysql

我做了一个简单的查询来使用php更新我的表,但无法弄清楚错误.

我的职责:

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;

}
Run Code Online (Sandbox Code Playgroud)

这是传递的功能:

$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);
Run Code Online (Sandbox Code Playgroud)

抛出的错误信息是:

失败:您的SQL语法出错; 检查与您的MySQL服务器版本相对应的手册,以便在'group ='O +',address1 ='dsd',district ='sdfs',age ='22',性别='男性',电话附近使用正确的语法第1行='23423'

Mat*_*rey 7

您需要引用您的字段名称,以及group保留的MySQL关键字.例如:

UPDATE blood_data SET `name` = '{$data['name']}', `group` = '{$data['group']}' ...
Run Code Online (Sandbox Code Playgroud)

看看使用PDO,因为它会为你做,并帮助防止SQL注入,以及许多其他好处.更不用说这些mysql_*功能已被弃用.