为什么即使单元格正确更新,我也会收到MySQL语法错误?

时间:2015-03-28 20:28:15

标签: php mysql syntax-error

抛出错误

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法

相关的代码

$update = mysqli_real_escape_string($connection, $update);
// $update = '10'; $id = '4'
$sql = "UPDATE tasks SET `shortDesc` = '".$update."' WHERE `id`=".$id;
if (mysqli_query($connection, $sql) === TRUE) {
    echo 1;
} else {
    echo mysqli_error($connection);
}

我无法在论坛上找到任何有用的类似错误。 它为什么有效但却抛出错误?

1 个答案:

答案 0 :(得分:0)

您发布的代码不应导致错误,因为参数$id永远不会为空。实际上查看您的错误消息和您的查询,这可能是唯一产生的错误,因为如果两个变量都为空,您将拥有:

UPDATE tasks SET `shortDesc` = '' WHERE `id`=

这将失败,因为id没有值。由于MySQL对引号中的数字没有问题,因此应该消除错误消息:

$sql = "UPDATE tasks SET `shortDesc` = '".$update."' WHERE `id`='".$id."'";

您可以对此进行优化,以便更好地阅读:

$sql = "UPDATE tasks SET `shortDesc` = '$update' WHERE `id`='$id'";

现在,如果变量为空,则查询仍然无效。

由于这是或者是您代码中唯一的错误来源,我认为您的商家信息中缺少某些内容,或者您​​的代码在缺少参数时被调用了两次?

为了质量保证,您应该在使用它们之前检查$ update和$ id的有效性。至少确保它们不是空的,从那以后你就可以不用电话了。