当我尝试以下SQL命令时,我收到了sql错误。
INSERT INTO exampleTbl VALUES('he doesn't work for me')
其中不包含撇号。
将带有'(撇号)的文本插入SQL表的方法是什么。
答案 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');