(更新设置)您的SQL语法中有错误

时间:2015-07-14 18:22:31

标签: php mysql database

此代码有效,表正在更新,但服务器响应: "您的SQL语法错误"。

为了兴趣而请求。请告诉我错误在哪里

$id = $_POST['id'];
$name = $_POST['name'];
$image = $_POST['image'];
$price = $_POST['price'];

mysql_connect("localhost","main","password");
mysql_select_db("main");

$result = mysql_query("SELECT * FROM goods WHERE id='".$id."'");
if(mysql_num_rows($result) > 0) {
    $newquery = mysql_query("UPDATE goods SET name='".$name."', image='".$image."', price='".$price."' WHERE id='".$id."'");
    if(!mysql_query($newquery)) {
        die('Invalid query: ' . mysql_error());
    } else {
        echo "Updated successfully";
        }
    } else {
        echo "Error: there is no such product in DB";
    }

错误:

  

查询无效:您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在#1;'附近使用正确的语法。在第1行

3 个答案:

答案 0 :(得分:1)

您的插入值是字符串。因此,您必须使用“或”将其包装:

$sql = "UPDATE users SET fullname = '".$fullname."', bio = '".$bio."', 
birthdate = '".$birthdate."', pass = '".$newpass."',
WHERE username = '".$susername."'";

答案 1 :(得分:0)

'名称'是一个MySQL keyword。如果您打算将其用作列名,那么在对列执行查询时必须使用反向标记:

"UPDATE `goods` SET `name`='".$name."', `image`='".$image."', `price`='".$price."' WHERE `id`='".$id."'"

答案 2 :(得分:-2)

你的情况有误。它期望一个整数而不是ID的字符串。

应该是:

$newquery = mysql_query("UPDATE goods SET name='".$name."', image='".$image."', price='".$price."' WHERE id=".$id);

但是你应该注意两件事。

  1. mysql_query和所有mysql_函数已被替换 的的mysqli _

  2. 您很容易受到SQL注入攻击。您应该使用PDO或任何ORM /数据库抽象来处理查询以防止这种情况发生。