如何逃离';(撇号)在mysql中?
当我从Xml中读取一些文本并将其放入数据库时,如果文本包含“(撇号),则会出现错误。如何在插入数据库时克服此问题 我不知道您在导入时使用的语言或方法。通常是反斜杠字符\。因此,您需要将“s”替换为\。有意义吗?您应该始终使用任何特定于语言的方法来避免输入数据。对于MySQL,转义字符是如何逃离';(撇号)在mysql中?,mysql,xml,escaping,Mysql,Xml,Escaping,当我从Xml中读取一些文本并将其放入数据库时,如果文本包含“(撇号),则会出现错误。如何在插入数据库时克服此问题 我不知道您在导入时使用的语言或方法。通常是反斜杠字符\。因此,您需要将“s”替换为\。有意义吗?您应该始终使用任何特定于语言的方法来避免输入数据。对于MySQL,转义字符是\。另一种选择是使用带有参数化输入的准备语句。这样就无需避开单撇号 我的猜测是,您在做事的方式中也存在一个重要的SQL注入漏洞。如果您甚至没有转义输入值或使用参数化的预处理语句,那么很容易将恶意代码注入XML。如果
\
。另一种选择是使用带有参数化输入的准备语句。这样就无需避开单撇号
我的猜测是,您在做事的方式中也存在一个重要的SQL注入漏洞。如果您甚至没有转义输入值或使用参数化的预处理语句,那么很容易将恶意代码注入XML。如果撇号前面加了\(反斜杠)。使用文本编辑器查找并替换
'
到\'
的所有内容应该可以工作。小心不要弄乱XML结构
前
约翰的
需要
约翰的
您还可以使用PHP或C#为您转义它。
以下是MySQL参考中的。:
有几种方法可以在字符串中包含引号字符:
带“.”的字符串中的“.”可以写为““””
带“”的字符串中的“”可以写为“”
在引号字符前面加一个转义字符(\)
用“”引用的字符串中的“%”不需要特殊处理,也不需要加倍或转义。同样,用“%”引用的字符串中的““”也不需要特殊处理
因此,给定的字符串foo'bar
可以用MySQL1编写:
虽然上面提到了主要问题,但请查找每种语言/适配器的正确方法。占位符消除了引用的需要(这可以防止由自定义逻辑引入的错误),并防止了许多恶意SQL注入的情况
1 MySQL选择的语法不同于其他常见的SQL实现;这种语法不是通用的。如果我使用预先准备好的语句,我不需要修改我的xml以替换为/'s right?@Naveen,如果使用参数化输入,这是正确的。如果您只是使用查询中包含的输入执行一个普通的SQL查询,并尝试准备/执行它,它仍然会失败。它是否取决于数据库中的数据类型?我在用长文,对不起!我测试了一个错误的文件。它正在工作。谢谢lot@Naveen很抱歉,昨天错过了您的后续评论。只要您实际使用的是参数化的预处理语句,您就不需要在不更改XML的情况下转义撇号。单独在Java中如何实现这一点?使用预处理语句:)不要转义-除非使用原始SQL进行手动处理。(适应语言)。另外,请参阅官方MySQL参考。使用您正在使用的编程语言的官方转义机制。不要用手逃逸,因为还有其他角色也需要逃逸,而用手做这样的事情几乎总是有漏洞,会让你很脆弱。简单!!使用事先准备好的语句。
'foo''bar'
'foo\'bar'
"foo'bar"