使用PHP在MongoDB上执行查询时出错

阿尔皮·高尔(Arpit gaur)

我正在尝试使用PHP作为脚本语言执行一个简单的插入查询。但是,我在执行它时得到以下错误实例。

array(2) { ["ok"]=> float(0) ["errmsg"]=> string(12) "unauthorized" }

我在本地计算机上编写了以下代码,并且运行良好:

$mongoClient = new MongoClient('localhost');
$mongoDB=$mongoClient->test_db;
$mql='db.products.insert( { item: "card", qty: 15 } );';
$data=$mongoDB->execute($mql);
var_dump($data);die;

但是,当我在创建MongoClient对象时使用以下代码段在开发服务器上运行相同的代码时,出现了上述错误。

$mongoClient=new MongoClient('mongodb://username:password@dbServer:port/test_db');
$mongoDB=$mongoClient->test_db;
$mql='db.products.insert( { item: "card", qty: 15 } );';
$data=$mongoDB->execute($mql);
var_dump($data);die;

在同一台数据库服务器上,我可以通过外壳执行相同的查询。从代码中,我可以看到我试图两次选择数据库,但是如果这可能是错误以及如何消除该错误,我将感到非常困惑。如果那不是错误,那么我太无知了。

我将RackSpace云服务器和ObjectRocket(由Rackspace使用)用于特定的MongoDB实例,但是无论如何都不应与该问题相关。请帮帮我。

萨马耶

您不是在使用PHP,而是在逃避JS,而是在使用PHP调用MongoDB的eval命令。MongoDB的更高版本要求运行eval的用户具有对数据库的完全不受控制的访问权限(超级管理员)。

http://docs.mongodb.org/manual/reference/command/eval/

在版本2.4中进行了更改:您必须具有完全的管理员访问权限才能运行。

您应该做的是不使用eval:

$mongoDB->products->insert(['item' => 'card', 'qty' => 15])

像这样

还可以mql吗?这不是您正在编写的mongo查询语言,而是JavaScript。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章