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