【发布时间】:2012-07-28 13:43:18
【问题描述】:
我对放入我的数据库的内容使用 mysql_real_escape_string,所以像 Bob's Shop 这样的东西会变成 Bob\'s Shop。并且,例如,如果我尝试选择所有包含 Bob\'s 的条目,我的选择语句如下所示:
SELECT * FROM tbl WHERE name LIKE '%Bob\\\'s%'
无论出于何种原因,它都不起作用,即使它完全可以起作用。
【问题讨论】:
-
mysql_real_escape_string()转义要由 API 插入的引号,但不存储转义的引号。当您查看数据库时,您不应该看到转义引号!。应该可以只做'%Bob\'s%' -
如果您确实在数据中看到了转义引号,则可能除了 mysql_real_escape_string() 之外,您还调用了诸如 addlashes() 之类的东西,或者您在 PHP 中打开了魔术引号。跨度>
-
嗯,这很奇怪,它总是将它存储为对我来说已转义。就像我认为如果我输入一个',该函数会将其转换为\\\',因此它会存储为\'。而且我只使用 mysql_real_escape_string,没有添加斜杠
-
检查
get_magic_quotes_gpc()你应该关闭魔术引号... -
@user1330341 恐怕您需要进入并修复所有现有数据以摆脱额外的反斜杠。 magic_quotes_gpc 在 PHP 中是一个糟糕的想法,不幸的是,在人们意识到它是愚蠢的很多年后,人们仍在为它买单。