<?php
$m = new MongoClient('mongodb://localhost', array(
'username' => 'wa',
'password' => 'password',
'db' => 'wa'
));
我正在使用该代码段进行连接,并尝试在PHP中运行命令以在MongoDB集合或数据库中插入/查找数据。
我安装了MongoDB并将mongo.so扩展名添加到我的php.ini。
我做错了什么?
答案 0 :(得分:0)
您可以从命令行运行连接代码吗?此外,您应该以这种格式传递连接选项:
的mongodb:// [用户名:密码@]主机1 [:端口1] [,主机2 [:端口2:],...] /分贝
使用此:
<?php
$m = new MongoClient('mongodb://wa:password@localhost/wa');
?>
这会抛出您在命令行上遇到的任何错误,并且易于诊断。答复应该是自我解释的。可能的原因:
localhost
并且此计算机上没有正在运行的mongod
或mongos
。 [所以改变主机和可能的端口]。似乎案例1适用于您提供用户凭据的事实,因为如果在您自己的计算机上进行开发,则不太可能需要它们。在与生产中的应用程序相同的服务器上运行MongoDB也是非常罕见的。
答案 1 :(得分:0)
对于任何偶然发现此问题的人,MongoClient均已被贬义,不适用于当前(截至2018年8月)的MongoDB PHP驱动程序。 (它将与mongodb.dll文件一起安装,而不是与* .so文件一起安装)
当前有效的连接示例为:
<?php
$user = "XXXX";
$pwd = 'XXXX';
$filter = [];
if (isset($_POST['needleID'])) {
$needleID = $_POST['needleID'];
$filter = ['id'=> $needleID];
}
//Manager Class
$connection = new MongoDB\Driver\Manager("mongodb://${user}:${pwd}@localhost:27017");
// Query Class
$query = new MongoDB\Driver\Query($filter);
// Output of the executeQuery will be object of MongoDB\Driver\Cursor class
$rows = $connection->executeQuery('sedwe.defaultConfig', $query);
// Convert rows to Array and sedn result back to client
$rowsArr = $rows->toArray();
echo json_encode($rowsArr);
?>