在我的 HTML 页面中,用户输入搜索查询并通过GET
. 在我的一些 mongodb 文档中,有一些字段具有'
其值。但是当用户输入一个不包含'
任何结果的查询时,就会返回。我也使用了 PHPaddslash
函数但没有成功。我应该如何将查询放在find
函数中?
$col->find(['word' => new MongoRegex('/^' . addslashes($term) . '/i')];
我在 2 天前遇到了同样的问题,我已经使用下面的查询解决了它。
下面是我的解决方案。
SELECT *
FROM tags
WHERE `name` = 'limit\\''s'
LIMIT 0 , 30
尝试使用htmlentities
而不是addslashes
$col->find(['word' => new MongoRegex('/^' . htmlentities($term, ENT_QUOTES, 'UTF-8') . '/i')];
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
is foo'bar
。如果您运行该脚本,您应该会看到该文档打印出来。