此代码有效,表正在更新,但服务器响应: "您的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行
答案 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);
但是你应该注意两件事。
mysql_query和所有mysql_函数已被替换 的的mysqli _ 强>
您很容易受到SQL注入攻击。您应该使用PDO或任何ORM /数据库抽象来处理查询以防止这种情况发生。