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

Php 为什么即使单元格更新正确,我也会出现MySQL语法错误?,php,mysql,syntax-error,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($connectio

引发的错误

您的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);
}
我在论坛上找不到任何有帮助的类似错误。
为什么它可以工作但会抛出错误?

如果参数
$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之前检查它们的有效性。至少要确保它们不是空的,这样你就可以免去通话。

id的值是多少?如果这不是一个整数,而是一个字符串,那么这就是你的问题。那么$update的值是多少?但是行被正确地更新了吗?echo或var_转储
$sql
部分并向我们展示它的结果。另一个可能的解释可能在于你没有向我们展示的内容;例如,拥有2个
mysqli_query()
实例;我以前见过这种情况。您发布的代码不会抛出该错误,除非您的行不是
int
。谢谢。事实上,代码被调用了两次(在focusout事件中按enter键并自动执行后。有一次,参数被删除,查询陷入了死胡同。@daniel,理论上,我是对的,我离开了。发布相关代码总是帮助我们找出确切的原因。@fred:有时这只是缺席的阴影……这里的阴影是唯一可能的错误原因:)