2014-12-04 167 views
0

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

更新记录时出错:您的SQL语法错误;检查对应于你的MySQL服务器版本正确的语法使用近“SET手机=” 3609992399' ,地址=‘123试验巷’,城市=‘战役的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的文件,一切看起来都很合适。任何线索?

+0

在查询中不需要大括号,只需调用一次即可。 – quid 2014-12-04 21:54:04

+0

只有一个** SET **需要,所以只保留其余的第一个删除 – 2014-12-04 21:55:39

+0

@quid大括号与问题无关。它们是有效的。 – 2014-12-04 21:58:40

回答

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中并不是一个好主意。

+0

确定您可以获得我的积分;) – 2014-12-04 21:57:05

+0

仍然无法解决问题。收到相同的错误。 – WolfInd 2014-12-04 22:49:09