Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中指定Mongo DB和集合名称作为变量_Php_Mongodb - Fatal编程技术网

在PHP中指定Mongo DB和集合名称作为变量

在PHP中指定Mongo DB和集合名称作为变量,php,mongodb,Php,Mongodb,MongoDB的PHP库允许我连接到这样的集合(): $m=newmongo(); $db=$m->喜剧; $collection=$db->cartons; 但是如何将数据库和/或集合名称指定为变量?我想做的是这样的: $m=newmongo(); $dbname=“喜剧”; $collectionname=“卡通”; $db=$m[$dbname]; $collection=$db[$collectionname]; 我可以做到这一点,所以我觉得奇怪的是,我不能用PHP做到这一点 更新:

MongoDB的PHP库允许我连接到这样的集合():

$m=newmongo();
$db=$m->喜剧;
$collection=$db->cartons;
但是如何将数据库和/或集合名称指定为变量?我想做的是这样的:

$m=newmongo();
$dbname=“喜剧”;
$collectionname=“卡通”;
$db=$m[$dbname];
$collection=$db[$collectionname];
我可以做到这一点,所以我觉得奇怪的是,我不能用PHP做到这一点

更新:这就是我在使用上述方法时遇到的错误,这让我相信没有内置的方法可以使用变量名来处理MongoDB集合

Fatal error: Cannot use object of type Mongo as array
回答:根据下面接受的答案,这将起作用:

$db=$m->$dbname;
$collection=$db->$collectionname;

您仍然可以通过变量使用->ie
$m->$dbname
via

来获取它,该变量将与使用的“名称”是PHP中有效的var名称的规定一起工作(例如,如果在“集合”名称上使用空格,它将失败)。

更新了
mongodb
库的代码:

$dbname = "comedy";
$collectionname = "cartoons";
$collection = (new MongoDB\Client("mongodb://".$config["MONGO_USER"].":".$config["MONGO_PASS"]."@".$config["MONGO_SERVER"]."/".$dbname))
        ->{$dbname}->{$collectionname};

$insertOneResult = $collection->insertOne([
    'data'=>"my data"
]);

谢谢,刚刚编辑过。但这并没有解决它-这是我得到的错误:“致命错误:不能使用Mongo类型的对象作为数组”您仍然可以通过变量->ie$m->$dbname通过Ah获得它,这确实有效!谢谢,你能编辑/更新你的答案吗?是否将此标记为正确?