MongoDB PHP连接无法正常工作

时间:2014-02-06 21:46:02

标签: php mongodb

<?php

$m = new MongoClient('mongodb://localhost', array(
    'username'  => 'wa',
    'password'  => 'password',
    'db'        => 'wa'
));

我正在使用该代码段进行连接,并尝试在PHP中运行命令以在MongoDB集合或数据库中插入/查找数据。

我安装了MongoDB并将mongo.so扩展名添加到我的php.ini。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您可以从命令行运行连接代码吗?此外,您应该以这种格式传递连接选项:

  

的mongodb:// [用户名:密码@]主机1 [:端口1] [,主机2 [:端口2:],...] /分贝

使用此:

<?php

  $m = new MongoClient('mongodb://wa:password@localhost/wa');

?>

这会抛出您在命令行上遇到的任何错误,并且易于诊断。答复应该是自我解释的。可能的原因:

  1. 您正在连接localhost并且此计算机上没有正在运行的mongodmongos。 [所以改变主机和可能的端口]。
  2. 您的用户凭据不正确
  3. 似乎案例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);
?>