【问题标题】:Search returns no rows in mysql query using LIKE and values having "\"搜索使用 LIKE 和具有“\”的值在 mysql 查询中不返回任何行
【发布时间】:2025-12-24 13:45:11
【问题描述】:

我在 mysql 中的搜索有一些问题。 以下是我的查询。

SELECT * FROM table WHERE name LIKE "%admin\'s%";

当我执行这个查询时,它将返回零数据。

实际上我有“管理员”存储在数据库中。这个“\”是为了防止sql注入。我使用mysql_real_escape_string 来防止sql 注入。

但是当我对我的变量使用 3 次 addlashes 时,它可以工作。

所以我下面的查询是有效的。

SELECT * FROM table WHERE name LIKE "%admin\\\\\\\'s%";

我上面的查询将返回名称类似于 admin 的数据。

我没有找到我错的地方。

【问题讨论】:

    标签: mysql sql-like addslashes


    【解决方案1】:

    对于一个你不应该在你的数据库管理员中拥有这样的数据的人来说......很可能你对你的字符串进行了双重转义(检查你的服务器上是否启用了 magic_quotes)。

    如果你只这样做

    INSERT ... username = "admin\'s";
    

    您将在您的数据库中拥有用户名值 admin 的 所以我的建议是继续从您的数据库中删除斜杠,然后您的第一个查询应该可以工作。

    【讨论】:

    • 不,我没有启用magic_quote。我正在使用 mysql_real_escape_string 来防止 sql 注入。这有什么问题?
    • 这没什么问题..但是mysql数据库中的数据不应该用斜杠保存..即使它被转义了。转义只是为了让查询起作用。