0

在我的 HTML 页面中,用户输入搜索查询并通过GET. 在我的一些 mongodb 文档中,有一些字段具有'其值。但是当用户输入一个不包含'任何结果的查询时,就会返回。我也使用了 PHPaddslash函数但没有成功。我应该如何将查询放在find函数中?

$col->find(['word' => new MongoRegex('/^' . addslashes($term) . '/i')];
4

3 回答 3

0

我在 2 天前遇到了同样的问题,我已经使用下面的查询解决了它。

下面是我的解决方案。

SELECT *
FROM tags
WHERE `name` = 'limit\\''s'
LIMIT 0 , 30

SEE HERE

于 2013-06-29T11:22:12.743 回答
0

尝试使用htmlentities而不是addslashes

$col->find(['word' => new MongoRegex('/^' . htmlentities($term, ENT_QUOTES, 'UTF-8') . '/i')];

参考:mongodb中单引号的正则表达式

于 2013-06-29T11:24:40.143 回答
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));

此查询仅匹配第一个文档,其中xis foo'bar。如果您运行该脚本,您应该会看到该文档打印出来。

于 2013-07-02T15:32:02.447 回答