如何在mysql数据库中存储特殊字符(',“,&等),以便可以搜索?

时间:2009-05-01 21:01:06

标签: php mysql

我在存储特殊字符(如引号,双引号和&符号)方面存在一个小问题。我通过mysql_real_escape_string()放置了每个POST请求,当我添加像"That '70s Show"这样的字符串时,它会被存储为mysql DB中的"That '70s Show"。当我回应它时,它工作正常...但是当我尝试运行%{$}%搜索"That '70s Show"时,它将找不到记录。我禁用了magic_quotes。

我怎样才能解决这个问题?

2 个答案:

答案 0 :(得分:3)

看起来问题是,您不仅要通过mysql_real_escape_string()运行存储在数据库中的传入数据,还要运行htmlentities()或亲戚。是这样的吗?如果是这样,退出。 :)

答案 1 :(得分:1)

引自Mysql参考文档

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

  • 引用“'”的字符串中的“'”可写为“''”。

  • 引用“”“的字符串中的”“”可写为“”“”。

  • 使用转义字符(“\”)作为引号字符前面。

  • 用“”“引用的字符串中的”'“不需要特殊处理和需要 不要加倍或逃脱。以同样的方式,引用字符串内的“” “'”不需要特殊处理。

以下SELECT语句演示了引用和转义的工作原理:

mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+

参考:http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html