首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php mongodb库中使用带数据库名称的uri

如何在php mongodb库中使用带数据库名称的uri
EN

Stack Overflow用户
提问于 2017-03-22 00:59:56
回答 1查看 995关注 0票数 1

我可能在这上面花了太多的时间。我使用heroku来部署php和mongodb应用程序。

Heroku mLab通过getenv(' MONGODB_URI ')在php中提供环境变量MONGODB_URI,其中包含标准MongoDBURI,如下所示:

代码语言:javascript
复制
mongodb://<dbuser>:<dbpassword>@dsxxxxxx.mlab.com:31899/heroku_lxxxxxx

它已经包含了现有的数据库名称,但php mongodb库教程建议不使用它连接字符串:

代码语言:javascript
复制
$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;

所以问题是我能以某种方式使用默认的heroku的MONGODB_URI字符串吗,或者我必须parse_uri它,然后单独提供给php。

EN

回答 1

Stack Overflow用户

发布于 2017-03-22 01:05:19

首先,您需要了解字符串'mongodb://localhost:27017‘是什么。它主要是告诉驱动程序无需身份验证就可以连接到运行在本地主机端口27017上的mongodb服务器。这很简单。现在heroku管理您的数据库,该数据库托管在单独的服务器上,需要授权,因此新代码应该是

代码语言:javascript
复制
$client = new MongoDB\Client("mongodb://<dbuser>:<dbpassword>@dsxxxxxx.mlab.com:31899/heroku_lxxxxxx");

现在,上面所说的又是错误的,因为用户名和密码甚至主机将来可能会改变,而你不想仅仅因为这一点而改变代码库。这就是环境变量提供帮助的原因。使用php getenv方法从heroku实例中获取字符串。我不知道变量的确切名称,但您可以从文档中获取,并最终在初始化mongodb驱动程序时传递该字符串。

编辑

我注意到你在问题中提到了MONGODB_URI,所以代码应该是

代码语言:javascript
复制
$mongoHost = getenv('MONGODB_URI');
$client = new MongoDB\Client($mongoHost);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42933648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档