PHP mysqli查询搜索反斜杠



我有一个SQL查询,它搜索json字符串,这些json字符串中包含反斜杠以转义引号。

我使用的SQL查询可以找到我想要的东西,但我很难让PHP mysqli查询正常工作,因为查询中必须有反斜杠,这些反斜杠是文字而不是转义符,而且必须使用反斜杠来转义mysqli查询中的引号。

所以我要搜索的字符串是这样的,反斜杠实际上出现在字符串中:

[inter=\"userform\",id=\"1\"]

我使用的SQL查询是:

SELECT id, name FROM `posts` WHERE content LIKE '%[insert=\"userform\",id=\"1\"]%' ESCAPE "|"

这可以通过更改默认的excape字符来查找我想要的行。但是,当我尝试在PHP中使用相同的查询时,我必须转义LIKE语句周围的单引号,这会导致问题。

$mysqli->query('SELECT id, name FROM `posts` WHERE content LIKE '%[insert=\"userform\",id=\"1\"]%' ESCAPE "|"');

我正在尝试使用mysqli_real_escape_string,因为我认为这可以满足我的需求,但还没能做到正确,我做错了什么?

这是因为php转义符是反斜杠,所以您也需要像这样对它们进行转义。

$mysqli->query('SELECT id, name FROM `posts` WHERE content LIKE '%[insert=\\"userform\\",id=\\"1\\"]%' ESCAPE "|"');

检查它的一个好的解决方案是在执行之前回显查询,以检查最终结果是否良好。

最新更新