SQL UPDATE 查询中的错误

Posted

技术标签:

【中文标题】SQL UPDATE 查询中的错误【英文标题】:Error in SQL UPDATE query 【发布时间】:2009-07-16 14:01:02 【问题描述】:
$result = mysql_query("UPDATE categories
        SET cd_title='$docuTitle' , cd_link='$linkTitle'
        WHERE c_name='$catID'");

这个更新查询有什么问题?

【问题讨论】:

查询看起来不错。请更具体。 给出的错误是什么? mysql_error() 应该输出它。 您的变量是否正确转义? 【参考方案1】:

您的变量中的数据可能有问题 - 但我们看不到它们包含的内容。

您应该使用参数化查询,这将处理数据中可能会弄乱语句的任何奇怪字符。

见How can I prevent SQL injection in php?和When are the most recommended times to use mysql_real_escape_string()

【讨论】:

【参考方案2】:

如果输入包含撇号,我会将查询更改为这样,以避免错误:

$result = mysql_query(
    "UPDATE categories SET
         cd_title='" . mysql_real_escape_string($docuTitle) . "',
         cd_link='" . mysql_real_escape_string($linkTitle) . "'
     WHERE
         c_name='" . mysql_real_escape_string($catID) . "'");

【讨论】:

【参考方案3】:

如果您的数据已清理,请删除 php 变量周围的单引号。

【讨论】:

以上是关于SQL UPDATE 查询中的错误的主要内容,如果未能解决你的问题,请参考以下文章

一个 Access SQL 查询中的多个 UPDATE

来自 UPDATE 查询的“SQL 命令未正确结束”错误 [重复]

SQL语句UPDATE 多表关联的

访问不允许SQL-Server列中的空值的INSERT或UPDATE(访问运行时错误3162)

如何在 SQL Server 中的 UPDATE 查询的子查询中引用表变量

如何从 SQL 查询中的 CREATE/UPDATE/INSERT 语句中提取表名?