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

Hoq*_*que 27 sql sql-server-2005

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

INSERT INTO exampleTbl VALUES('he doesn't work for me')
Run Code Online (Sandbox Code Playgroud)

哪里不包含撇号.

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

Lau*_*ves 65

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

'he doesn''t work for me'
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您从程序后端执行此操作,请使用参数化查询.您实际上是在这里看到SQL注入攻击. (3认同)

Ed *_*d B 9

INSERT INTO exampleTbl VALUES('he doesn''t work for me')
Run Code Online (Sandbox Code Playgroud)

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


Fos*_*erZ 6

尝试这个

INSERT INTO exampleTbl VALUES('he doesn''t work for me')
Run Code Online (Sandbox Code Playgroud)


小智 6

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

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

INSERT INTO exampleTbl (`column`) VALUES('$new_value')
Run Code Online (Sandbox Code Playgroud)