我有一个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 "|"');
检查它的一个好的解决方案是在执行之前回显查询,以检查最终结果是否良好。