-1

当我从 Xml 读取一些文本并将其放入数据库时​​,如果文本包含 '(撇号) ,我会收到错误消息。当我插入数据库时​​如何克服这个问题。

4

4 回答 4

2

在撇号之前添加一个\(反斜杠)的地方。使用您的文本编辑器进行查找并替换所有 for 'to\'应该可以工作。小心不要弄乱 XML 结构。

前任。

约翰的

需要是

约翰的

您也可以使用 PHP 或 C# 为您转义它。这是PHP 函数

于 2013-05-21T17:25:11.510 回答
1

您应该始终使用任何特定于语言的方法来转义输入数据。对于 MySQL,转义字符是\. 另一种选择是使用带有参数化输入的准备好的语句。这将消除转义单个撇号的需要。

我的猜测是,你做事的方式也有一个严重的 SQL 注入漏洞。如果您甚至没有转义您的输入值或使用参数化的预处理语句,那么很容易将恶意代码注入 XML。

于 2013-05-21T17:23:34.747 回答
0

我不知道您使用什么语言或方法进行导入。通常它是反斜杠字符 \ 。所以你需要用\'替换's。有道理?

于 2013-05-21T17:19:38.033 回答
0

从MySQL 参考中的9.1.1 字符串文字:

有几种方法可以在字符串中包含引号字符:

用“'”引用的字符串中的“'”可以写成“''”。

一个“” 在用“&”引用的字符串内 可以写成“”“”。

在引号字符前加上转义字符 (“\”)。

用“&”引用的字符串中的“'” 不需要特殊处理,也不需要加倍或转义。同理,“” 在用“'”引用的字符串内不需要特殊处理。

因此,给定的字符串foo'bar可以写在 MySQL 1中:

'foo''bar'
'foo\'bar'
"foo'bar"

虽然以上解决了主要问题,但请使用占位符(也就是准备好的语句) - 查找每种语言/适配器的正确方法。占位符消除了引用的需要(这可以防止自定义逻辑引入的错误)​​并防止许多恶意 SQL 注入的情况。


1 MySQL选择的语法不同于其他常见的SQL实现;这种语法不是通用的。

于 2013-05-21T21:04:34.733 回答