将带有'(撇号)的文本插入SQL表的方法

时间:2011-12-01 05:11:29

标签: sql sql-server-2005

当我尝试以下SQL命令时,我收到了sql错误。

INSERT INTO exampleTbl VALUES('he doesn't work for me')

其中不包含撇号。

将带有'(撇号)的文本插入SQL表的方法是什么。

8 个答案:

答案 0 :(得分:61)

在SQL中,执行此操作的方法是将撇号加倍:

'he doesn''t work for me'

如果以编程方式执行此操作,则应使用接受参数的API并为其转义,例如预处理语句或类似语句,而不是转义并使用字符串连接来组合查询。

答案 1 :(得分:7)

INSERT INTO exampleTbl VALUES('he doesn''t work for me')

如果您是通过ASP.NET添加记录,则可以使用SqlParameter对象传入值,这样您就不必担心用户输入的撇号。

答案 2 :(得分:3)

试试这个

INSERT INTO exampleTbl VALUES('he doesn''t work for me')

答案 3 :(得分:0)

$value = "he doesn't work for me";

$new_value = str_replace("'", "''", "$value"); // it looks like  " ' "  , " ' ' " 

INSERT INTO exampleTbl (`column`) VALUES('$new_value')

答案 4 :(得分:0)

我知道这个问题是针对撇号字符的直接转义,但是我认为通常是由某种提供输入的程序触发的。

在我处理过的脚本和程序中,我所做的普遍工作是在处理输入文本的格式时将其替换为`字符。

现在我知道在某些情况下,反引号字符实际上可能是您要保存的内容的一部分(例如在这样的论坛上),但是如果您只是保存来自用户的文本输入,则可能解决方案。

进入SQL数据库

$newval=~s/\'/`/g;

然后,当返回显示时,再次过滤如下:

$showval=~s/`/\'/g;

此示例是使用PERL / CGI时的示例,但它也适用于PHP和其他基础。我发现它很好用,因为我认为它有助于防止可能的注入尝试,因为所有'在尝试插入记录之前都已删除。

答案 5 :(得分:-1)

insert into table1 values("sunil''s book",123,99382932938);

在单撇号内使用双撇号, 它会起作用

答案 6 :(得分:-2)

是的,由于sql注入攻击,sql server不允许在表字段中插入单引号。所以我们必须在保存的同时用双倍替换单个appostrophe。

(他不适合我)必须是=> (他不为我工作)

答案 7 :(得分:-5)

如果要在文本中显示单引号,可以使用反斜杠“\”。

INSERT INTO exampleTbl VALUES('他没有(\')t');