2014-01-13 3 views
3

Я пытался экспериментировать с MongoDb, и когда я запускаю скрипт для подключения, он не может, потому что пароль использует символ @.MongoClient, connect with '@' в пароле

Для подключения к MongoDb

mongodb://username:[email protected]

Но как мой пароль для подключения к MongoDb использует @ символ, он не может подключиться из-за @ символа.

Например,

new MongoClient("mongodb://mongo:[email protected]@localhost);

Выбросите следующее сообщение об ошибке;

PHP Fatal error: Uncaught exception 'MongoConnectionException' with message 'Failed to connect to: [email protected]:27017: Couldn't get host info for [email protected]'

Как вы можете видеть, он думает, что в пароле первого @ является Seperator для пароля и хоста.

Есть ли способ подключения и разрешить символ @ при использовании MongoClient?

ответ

6

http://uk3.php.net/manual/en/mongoclient.construct.php вы можете передать имя пользователя и пароль в качестве параметров массива

new MongoClient("mongodb://localhost:27017", array("username" => "joe", "password" => "test"));

+1

Ах, отлично! Спасибо! –

0

Вы можете попробовать с помощью этого кода. Просто передайте свой ввод в соответствии с динамическим значением.

try { 
      $m = new MongoClient("mongodb://HOST:" . MNG_PORT, array(
       "username" => MNG_USER, 
       "password" => MNG_PWD 
      )); // connect local Mongo 
      $db = $m->selectDB("DBNAME"); // select DB 
      $collection = $db->collections; // connect to collection 
     } catch (MongoConnectionException $e) { 
      echo 'Couldn\'t connect to mongodb, is the "mongo" process running?'; 
      exit(); 
     }