我做了一个简单的查询来使用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;
}
这是函数传递的内容:
$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附近使用正确的语法第1行='23423'
答案 0 :(得分:7)
您需要引用您的字段名称,因为group
是一个保留的MySQL关键字。例如:
UPDATE blood_data SET `name` = '{$data['name']}', `group` = '{$data['group']}' ...
请使用PDO,因为它将为您完成并帮助防止SQL注入,以及许多其他好处。更不用说mysql_*
函数已被弃用。
答案 1 :(得分:0)
您应该避免使用此类代码,您的程序容易受到SQL注入攻击。考虑将mysqli与预备语句一起使用。
正如 Matt Humphrey 在他的回答中已经提到的那样,group是保留的mysql关键字,但你可以在用这样的反引号中公开它时使用它:
`group`