当我尝试以下SQL命令时,出现了SQL错误。
INSERT INTO exampleTbl VALUES('he doesn't work for me')
不包含撇号的位置在哪里。
如何将带有 '(撇号)的文本插入SQL表中。
当我尝试以下SQL命令时,出现了SQL错误。
INSERT INTO exampleTbl VALUES('he doesn't work for me')
不包含撇号的位置在哪里。
如何将带有 '(撇号)的文本插入SQL表中。
在SQL中,做到这一点的方法是将撇号加倍:
'he doesn''t work for me'
INSERT INTO exampleTbl VALUES('he doesn''t work for me')
$value = "he doesn't work for me";
$new_value = str_replace("'", "''", "$value"); // it looks like " ' " , " ' ' "
INSERT INTO exampleTbl (`column`) VALUES('$new_value')
试试这个
INSERT INTO exampleTbl VALUES('he doesn''t work for me')
insert into table1 values("sunil''s book",123,99382932938);
在单引号内使用双引号,这样就可以正常工作。
我知道这个问题的目的是直接转义撇号字符,但我认为通常情况下这将由某种程序提供输入来触发。
在我所使用的所有脚本和程序中,我普遍采用的解决方法是在处理输入文本的格式时用 ` 字符替换它。
现在我知道,在某些情况下,反引号字符实际上可能是您尝试保存的一部分(例如像这样的论坛),但如果您只是保存用户的文本输入,这是一个可行的解决方案。
进入SQL数据库
$newval=~s/\'/`/g;
然后,当再次返回显示时,会像这样再次进行过滤:
$showval=~s/`/\'/g;
这个例子是在使用PERL/CGI时,但它同样适用于PHP和其他基础。我发现它的效果很好,因为它有助于防止可能的注入尝试,因为在尝试插入记录之前,所有的 ' 都被移除了。
是的,由于 SQL 注入攻击,SQL Server 不允许在表字段中插入单引号。因此,在保存时,我们必须将单引号替换为双引号。
"(他不为我工作)" 必须更改为 "(他不工作)"。
如果你想在文本中显示单引号,可以使用反斜杠 '\'。
插入数据:INSERT INTO exampleTbl VALUES('He doesn(\')t') ;