1

我有一个客户表,我需要将客户数据存储为文本,并在 db 中声明 varchar(1500),同时尝试更新该字段,我得到以下错误

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便自 1500 年代以来使用 near 的标准虚拟文本,当时未知打印机在第 1 行采取了措施“

field name is "comments1 varchar(1500);"

我的查询是

$sql="UPDATE customer SET comments1='".$comments1."' WHERE sno='$sno'";

如何解决它...

4

5 回答 5

4

在您的查询之前添加此代码

$comments1=mysql_real_escape_string($comments1);

<----您的查询在这里--->

于 2013-04-30T07:02:00.800 回答
1

根据错误信息:

...或使用 near的标准虚拟文本的正确语法,因为
                        错误从这里开始 ^

可能您正在插入一个带有单引号的值(这会破坏导致语法错误的 sql 语句)。这表明您在将值插入数据库之前尚未对其进行清理。有几种方法可以避免sql注入:

  • 通过使用PDO
  • 另一个:MySQLi

欲了解更多详情,请浏览此链接。


你也可以使用mysql_real_escape_string但很快就会被弃用

$var = mysql_real_escape_string($comments1);
$sql="UPDATE customer SET comments1='$var' WHERE sno='$sno'";
于 2013-04-30T06:45:07.993 回答
1

您的评论变量包含单引号,您需要使用 addlashes 函数对其进行转义。

试试这个

$sql="UPDATE customer SET comments1='".addslashes($comments1)."' WHERE sno='$sno'";
于 2013-04-30T06:46:13.513 回答
0

看来您的列名comments不是comments1. field name is "comments varchar(1500);"所以改变

$sql="UPDATE customer SET comments1='".$comments1."' WHERE sno='$sno'";

 $sql="UPDATE customer SET comments='".$comments1."' WHERE sno='$sno'";
于 2013-04-30T07:21:55.630 回答
0

最好尝试使用这个函数 mysql_real_escape_string()

于 2013-05-02T08:20:18.057 回答