数据库 - PHP读写MongoDB,shell读写MongoDB,兵分两路操作,怎么数据还是相互隔离的?
PHPz
PHPz 2017-04-10 14:40:23
[PHP讨论组]

首先启动mongod服务器;
打开一个shell客户端:

use haha
db.haha.insert({'a':'aaa'})
db.haha.find()
{'a':'aaa'} // 添加成功了

打开另一个shell客户端:

use haha
db.haha.find() // 确认一下刚才的输入
{'a':'aaa'} // 果然有效

可以看到,shell客户端里是有效果的。
下面是php代码:

$m = new MongoClient();
$jihe = $m->db->haha;

$cursor = $jihe->find();
foreach($cursor as $item){
var_dump($item); //什么都没有,空数据
}

然后修改php代码为:

$m = new MongoClient();
$jihe = $m->db->haha;

$doc = array('b'=>'bbb');
$jihe->insert($doc); // php自己试着插入数据

$cursor = $jihe->find();
foreach($cursor as $item){
var_dump($item); //这次仅有 {'b':'bbb'}数据,没有shell里面设置的{'a':'aaa'}
}

这是怎么回事呢?都是针对同一个数据库发起的操作啊。shell客户端和php访问,怎么有如此差异?

PHPz
PHPz

学习是最好的投资!

全部回复(2)
怪我咯

推测:shell连的是haha,php连的是db,这是2个数据库空间。
打开一个shell客户端,输入命令

show dbs

输出结果除了haha,是不是还有一个db?如果是Yes

$jihe = $m->db->haha;

应该改为

$jihe = $m->haha->haha;

如果是No,(摊手)php多年没碰了。

大家讲道理

确认你连的是同一个服务器,同一个数据库

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号