简体   繁体   English

动态数据库选择 PHP Mongodb

[英]Dynamic Database Selection in PHP Mongodb

Not able to select the database and collection dynamically. select 无法对database进行动态采集。 Read all the solutions but not working for me.阅读所有解决方案但不适合我。 selectDB function not working. selectDB function 不工作。 It's working only with the static data.它仅适用于 static 数据。

I want to select the database from the configuration file and also select the collections dynamically.我想 select 来自配置文件的数据库以及 select collections 动态。

$username='abcd';
$password='efgh';
$m = new MongoDB\Client("mongodb://abcd@127.0.0.1:28015/ijkl", array("username" => $username, "password" => $password));

$db = $m->ijkl;

but I want to have it like但我想让它像

$username='abcd';
$password='efgh';
$m = new MongoDB\Client("mongodb://abcd@127.0.0.1:28015/ijkl", array("username" => $username, "password" => $password));

$l1="ijkl";
$db = $m->$l1;

Expecting to work with dynamic database selection.期望使用动态数据库选择。

Use mongodb client repo from packagist. 使用来自packagist的mongodb客户回购。 You can install it via composer 您可以通过作曲家安装它

$ composer require mongodb/mongodb

in your root directory, create file for example app.php 在您的根目录中,创建例如app.php的文件

<?php

require 'vendor/autoload.php';

$databases = [
 'db1'=> [
    'db' => 'testdb1',
    'username' => 'user',
    'password' => 'pass',
    ...
 ], 
  'db2'=> [...],
  ...
];
$seletected = 'db1';

$database = $databases[$selected];

$client = new MongoDB\Client(
    "mongodb+srv://{$database['username']}:{$database['password']}@<cluster-address>/test?retryWrites=true&w=majority"
);


$db = $client->{$database['db']};

Finally it's working 终于可以了

$m = new MongoDB\Client("mongodb://".$mongo_username."@".$mongo_ip.":".$mongo_port."/".$mongo_db, array("username" => $mongo_username, "password" => $mongo_password));


 if(!empty($db = $m->$mongo_db))
 {
     $collection = "test";

   if(!empty($collection = $db->$collection))
   {

    $cursor =$collection->find(array("status"=>0), ['limit' => 10,'skip'=>10]);

     foreach ($cursor as $document) {

        echo "<b>ID is:</b>";
        echo $id=$document["_id"];
        echo "<br>";
        echo "<b>Link is:</b>";
        echo $link=$document["Link"];
        echo "<br>";
        echo "<b>Status is:</b>";
        echo $status=$document["status"];
        echo "<br>";
        echo "<b>Label is:</b>";
        echo $label=$document["Label"];
        echo "<br>";


    }
   }
   else
   {
       echo "Not able to select the collection!";
   }
 }
 else
 {
     echo "Not able to select the database!";
 }

replace $db = $m->$l1 to $db = $m->{$l1}将 $db = $m->$l1 替换为 $db = $m->{$l1}

$username='abcd';
$password='efgh';
require 'vendor/aoutoload.php';
$m = new MongoDB\Client("mongodb://abcd@127.0.0.1:28015/ijkl", array("username"=> $username, "password" => $password));

$l1="ijkl";

$db = $m->{$l1};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM