MySQL无法更新记录

时间:2014-12-04 21:52:12

标签: php mysql forms sql-update

尝试通过php表单提交更新MySQL中的记录,但我一直收到错误:

更新记录时出错:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'SET phone ='3609992399'附近使用正确的语法,地址='123 Test Lane',city ='Battle Gr'在第4行

if (isset($_POST['submit'])) {  
    $first_name = $_POST['first_name'];
    $last_name  = $_POST['last_name'];
    $email      = $_POST['email'];
    $phone      = $_POST['phone'];
    $address    = $_POST['address'];
    $city       = $_POST['city'];
    $state      = $_POST['state'];
    $zipcode    = $_POST['zipcode'];

    $mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
    if ($mysqli->connect_errno) {
        echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
        exit();
    } else {
        $updateUser = "UPDATE users SET first_name='{$first_name}', last_name='{$last_name}', email='{$email}', phone='{$phone}', address='{$address}', city='{$city}', state='{$state}', zipcode='{$zipcode}' WHERE vendorid='{$user['vendorid']}'";
        if ($mysqli->query($updateUser) === TRUE) {
            echo "Record updated successfully";
        } else {
            echo "Error updating record: " . $mysqli->error;
        }
    }

    $mysqli->close();
}

我检查了5.5上的文档,一切看起来都很合适。有线索吗?

1 个答案:

答案 0 :(得分:0)

您没有很好地阅读文档。

多次使用SET是不正确的。将其更改为:

UPDATE users SET
    first_name='{$first_name}',
    last_name='{$last_name}',
    email='{$email}',
    phone='{$phone}',
    address='{$address}',
    city='{$city}',
    state='{$state}',
    zipcode='{$zipcode}'
WHERE
    vendorid='{$user['vendorid']}'

从文档中,第二行:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

您还应该了解自己的安全问题。直接从浏览器中将数据放入SQL中并不是一个好主意。