MongoDB文档中的单引号

时间:2013-06-29 11:08:13

标签: php mongodb

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

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

3 个答案:

答案 0 :(得分:0)

我在2天之前遇到了同样的问题,我使用以下查询解决了这个问题。

以下是我的解决方案。

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

SEE HERE

答案 1 :(得分:0)

尝试使用htmlentities代替addslashes

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

参考:regular expression for single quote mark in mongodb

答案 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));

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