一个非常奇怪的Apostrophes MySQL PHP错误

Dor*_*jan 1 php mysql apostrophe

另一个脑筋急转弯.

这不是通常的"但Apostrophes打破了我的查询",因为我知道所有关于逃避和消毒的事情,所以我也会这样做.

许多东西都存储在一个名为"刺客"和"宝贝"之类的数据库中,这些名字最终成为"刺客"和"宝贝",恢复很好但是通过文本搜索是......痛苦的.

像"%Babe \'s%"没有结果,"%Babe \\'s"没有结果,"%Babe \'s"没有结果.

但如果我直接去服务器那么他们都会产生结果.

换句话说,完全未经编辑的SAME查询将直接在MySQL引擎中工作,但是通过php的mysql api发送它不会产生匹配的结果.

有什么想法会导致这种情况吗?(我已经检查过100次斜线数量,是否存在字符集问题?"

很多很多人都提前感谢.

编辑:

我想我最好让自己更清楚:

"SELECT title FROM games WHERE title LIKE "%assassin\\\'s%"; (因为SQL应该逃避撇号,其中一个斜杠将变成存储的斜杠,因为我们在这个例子中寻找"刺客信条")

编辑2:播种我们已经发现这是由于在消毒不良导致的实际数据包中逃脱逃逸造成的.目前我正在尝试清理db和输入方法.

编辑3:似乎魔法引用是以某种方式......我发誓这是关闭的!然而,不只是这样.适用于此站点的DB包装器具有干净事件以及导致该问题的预清理.现在已经修复了,现在我正在运行一个脚本(希望)清理db ...

Pow*_*ord 5

我会认真考虑修复数据库中的数据.

现在,话虽如此,MySQL认识到这两者\'并且''作为一个逃脱的撇号.也就是说,除非将服务器模式设置为使用严格SQL,否则只能''识别.

这些数据在进入时肯定会被双重转义,很可能一次是在用户输入时(通过magic_quotes_gpc,使用addslashes),再次是mysql_real_escape_string在你打电话时.

这将Assassin's Creed变成Assassin\\\'s Creed,最终将存储为Assassin\'s Creed.

magic_quotes_gpc如果可以,我强烈建议禁用,因为它会导致更多问题而不是修复.