Php MySQL错误1064-但没有错误?

Php MySQL错误1064-但没有错误?,php,mysql,database,Php,Mysql,Database,我不明白这一点: 我将更新mysql数据库 mysql_query("UPDATE image Set title = '".$ed1."', desc = '".$ed2."', cat = '".$ed3."', privacy = '".$ed4."' WHERE id = '".$id."'"); 但它表明: 错误1064 以及: 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 近描述=[…] 编辑: 谢谢你的回复。我已经改名了!现在它起作用了 DE

我不明白这一点:

我将更新mysql数据库

mysql_query("UPDATE image Set title = '".$ed1."', desc = '".$ed2."', cat = '".$ed3."', privacy = '".$ed4."' WHERE id = '".$id."'");
但它表明:

错误1064

以及:

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 近描述=[…]

编辑: 谢谢你的回复。我已经改名了!现在它起作用了

DESC是一个。你需要用回击来逃避它。试一试

UPDATE image Set title = '".$ed1."', `desc` = ...

DESC是SQL中的保留字。如果你想使用它,你需要引用它:

mysql_query("UPDATE `image` Set `title` = '".$ed1."', `desc` = '".$ed2."', `cat` = '".$ed3."', `privacy` = '".$ed4."' WHERE `id` = '".$id."'");
如果可以的话,你应该尽量避免在字段名中使用保留字;这里有一个列表:


您还应该考虑从mysql_*函数进行迁移,因为它们已被弃用。您应该考虑改用PDO或mysqli,它们都可以帮助您编写更安全的SQL。

请不要再使用mysql_*API。它正遭到社区的反对。这是非常不安全和低效的。将PDO或mysqli与准备好的语句一起使用。+1为了建议切换到PDO,我最近爱上了以这种方式执行SQL。另外,我建议不要引用desc字段,而是修改名称,这样以后就不会有任何问题了。请不要再使用mysql_*API。它正遭到社区的反对。这是非常不安全和低效的。将PDO或mysqli与准备好的语句一起使用。@markus tharkun:这不是不安全的。它可以和mysqli或pdo一样安全。mysqli/pdo并没有让它们更安全。您可以在mysqli和pdo中编写完全相同的易受攻击代码。请停止散布恐惧。