另一个脑筋急转弯。
这不是通常的“但撇号正在破坏我的查询”,因为我知道所有关于转义和消毒的知识,所以我也会做对。
许多东西都存储在名称为“Assassin's”和“Babe's”的数据库中,最终名称为“Assassin\'s”和“Babe\'s”,恢复很好,但通过文本搜索......很痛苦。
LIKE "%Babe\'s%" 没有结果,"%Babe\\'s" 没有结果,"%Babe\'s" 没有结果。
但是如果我直接去服务器,那么它们都会产生结果。
换句话说,完全未经编辑的 SAME 查询将直接在 MySQL 引擎中工作,但通过 php 的 mysql api 发送它不会产生匹配的结果。
有什么想法可能导致这种情况吗?(我检查了 100 次斜杠等,是否存在字符集问题?”
很多很多很多提前感谢。
编辑:
我想我最好让自己更清楚:
"SELECT title FROM games WHERE title LIKE "%assassin\\\'s%";
(因为 SQL 应该转义撇号并且其中一个斜杠将变成存储的斜杠,因为我们在此示例中正在寻找“刺客信条”)
编辑2:我们已经发现这是由于在实际数据库中由于消毒不良而逃脱了逃逸引起的。目前我正在尝试清理数据库和输入法。
编辑3:似乎魔术报价以某种方式开启了......我发誓它被关闭了!然而,不仅如此。该站点的数据库包装器有一个清理事件和一个导致问题的预清理。现在已经修复了,现在我正在运行一个脚本来(希望)清理数据库......