PHP mysqli查询搜索反斜杠

时间:2020-09-16 09:39:30

标签: php mysql escaping

我有一个用于查询json字符串的SQL查询,这些json字符串中包含反斜杠以避开引号。

我正在使用的SQL查询可以找到我想要的内容,但由于要在查询中使用反斜杠(即文字而不是转义字符),因此我在努力使PHP mysqli查询正常工作,而且还必须使用反斜杠在mysqli查询中转义引号。

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

[插入= \“用户窗体\”,id = \“ 1 \”]

我使用的SQL查询是:

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

这可以通过更改默认的exape字符来查找所需的行。但是,当我尝试在PHP中使用相同的查询时,我不得不对引起问题的LIKE语句周围的单引号进行转义。

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

我正在尝试使用mysqli_real_escape_string,因为我认为这可以满足我的需要,但还无法正确完成,我在做什么错了?

1 个答案:

答案 0 :(得分:3)

这是因为php的转义字符是反斜杠,因此您也需要将其转义。

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

检查执行结果以检查最终结果是否良好的一种很好的解决方案。