0

我做了一个简单的查询来使用 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 附近使用的正确语法='23423' 在第 1 行

4

2 回答 2

7

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

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

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

于 2012-09-05T08:13:39.023 回答
0

你应该避免这样的代码,你的程序很容易受到 SQL 注入攻击。考虑将 mysqli 与准备好的语句一起使用。

正如马特汉弗莱(Matt Humphrey)在他的回答中已经提到的那样, group 是保留的 mysql 关键字,但是当您像这样在反引号中公开它时可以使用它:

`group`
于 2012-09-05T08:18:27.587 回答