我在mongodb中有一个数据名称为“&”在里面。像“床和早餐”之类的东西。 当我更新它的名字时,它仍然只是数据库中的“床”。 我觉得我可以直接在mongo shell中修改。但事实证明,来自php的查询查询也不起作用。我确定我在mongodb有一个名为“Bed& Breakfast”的数据,我可以在mongodb中找到这些数据,但不能从php中找到。没有“&”的所有其他数据工作得很好。 我该如何解决这个问题?
$connection = new Mongo( "localhost:27017" );
$db = $connection->selectDB("database");
$collection = $db->selectCollection("room");
if(isset($_GET['name'])){
$name = $_GET['name'];
}
$filter = array('name' => $name);
$cursor = $collection->find($filter);
if($cursor->hasNext()){
foreach($cursor as $data){
echo $data;
}
}else{
echo 'null';
}
答案 0 :(得分:1)
这是因为你从PHP“GET”中取名。
当收到GET参数时,PHP会根据“&”拆分它们。因此,时间:
$ name = $ _GET ['name']
此行已处理,$ name设为“Bed”而非“Bed& Breakfast”。
要解决此问题,请使用post发送参数,如果可能,
否则,将URL编码应用于传递给GET字符串的参数。
urlencode的参考 -