在我的HTML页面中,用户输入搜索查询并通过GET
发送。在我的一些mongodb文档中,有些字段的值为'
。但是当用户输入包含'
的查询时,不会返回任何结果。我也使用PHP addslash
函数没有成功。我应该如何将查询放在find
函数中?
$col->find(['word' => new MongoRegex('/^' . addslashes($term) . '/i')];
答案 0 :(得分:0)
我在2天之前遇到了同样的问题,我使用以下查询解决了这个问题。
以下是我的解决方案。
SELECT *
FROM tags
WHERE `name` = 'limit\\''s'
LIMIT 0 , 30
答案 1 :(得分:0)
尝试使用htmlentities
代替addslashes
$col->find(['word' => new MongoRegex('/^' . htmlentities($term, ENT_QUOTES, 'UTF-8') . '/i')];
答案 2 :(得分:0)
JS shell似乎需要将'
转义为unicode \x27
(请参阅:this answer),但PHP驱动程序不需要任何特殊处理。请考虑以下示例:
$m = new MongoClient();
$c = $m->test->foo;
$c->drop();
$c->insert(['x'=>"foo'bar"]);
$c->insert(['x'=>"foobar"]);
$r = $c->find(['x' => new MongoRegex("/^foo'/i")]);
var_dump(iterator_to_array($r));
此查询仅匹配第一个文档,其中x
为foo'bar
。如果您运行该脚本,您应该会看到该文档已打印出来。