第六部分 实战篇

想在PHP中调用Mongo需要安装MongoDB的PHP扩展
1) 首先下载最新的php mongodb扩展源码,源码可以在http://pecl.php.net/paclcage/mongo下载

2) 解压
wget http://pecl.php.net/paclcage/mongo
tar zxf mongo-1.2.6.tgz
ch mongo-1.2.6

3) 进入文件夹后,运行phpize来准备编译扩展的环境
/usr/local/php/bin/phpize

4) 运行后,我们运行./configure脚本来进行配置
./cinfigure --with-php-config=/usr/local/php/bin/php-config
--with-php-config这个参数是告诉配置脚本php-config这个程序的路径

5)这里用make来编译扩展
make && make install
正确编译数据结果

完成后,请编辑你的php.ini文件增加一行
extension=mongo.so
一般默认的编译php.ini文件/usr/local/php/etc/php.ini
重启Apache打开phpinfo
看到mongo 模块,主证明MongoDB的php扩展安装成功

这块安装配置在服务器上太慢了,网慢哦,等虚拟机弄起来在弄吧
给php打mongo模块

(1): 执行 /usr/local/php/bin/phpize
(2): ./configure --with-php-config=/usr/local/php/bin/php-cinfig --enable-mongo
(3): 在php.ini中添加上mongo.os加上去
(4): 重载apache

后面讲这种弄不懂样,多看看他们的视频吧

在php的mongo扩展中,提供了四类接口(对象):
1 针对mongoDB连接的操作:Mongo
2 针对mongoDB中数据库的操作: MongoDB
3 针对MongoDB中collection的操作: MongoCollection
4 针对查询结果集的操作:MongoCursor

1 连接Mongo服务器
$db->close();

连接数据库:

<?php
$conn = new Mongo("mongodb://user1:123456@localhost:27017/test");
$db = $conn->test;
?>

查询数据:

<?php
include "conn.php";
$c1 = $db->c1;
//db.c1.find({"age":{$gt:40}});
//{name:"user1"}==array("name"=>"user1");
//[1,2] = array(1,2);
$arr = array();
$ret = $c1->find($arr);
foreach ($ret as $val) {
//echo "id:{$val['_id']}<BR>";
///echo "name:{$val['name']}<BR>";
$age = isset($val['age']) ? $val['age'] : 0;
echo "<a href='user.php?id={$val['_id']}'>{$val['name']}</a> age:{$age}---<a href='delete.php?name={$val['name']}'>del</a>--<a href='update.php?id={$val['_id']}'>update</a>";

echo "<BR><BR><BR>";
}
?>

修改:

<?php
include "conn.php";
$c1 = $db->c1;
//$db.c1.update({name:"user1"},{$set:{age:300}});

$id = new MongoId($_GET['id']);
$arr=array('_id'=>$id);
$darr = array('$set'=>array('age'=>250));

$opts = array('upsert'=>false,'multiple'=>true);
//相当于db.update()后面的第三跟第四个叁数
if($c1->update($arr,$darr, $opts)){
echo "<script>location='find.php'</script>";
}else{
echo "更改失败!";
}
?>

插入:

<?php
include "conn.php";
$c1 = $db->c1;

//db.c1.insert({name:"user3", age:30, sex:"man"});

$arr = array("name"=>"user3", "age"=>30, "sex"=>"man");
if($c1->insert($arr)){
echo "<script>location='find.php'</script>";
}else{
echo "插入数据失败!";
}
?>

删除:

<?php
include "conn.php";
$c1 = $db->c1;
//db.c1.remover({"name":"user2"});
$name = $_GET['name'];
if(!empty($name))
{
$arr = array("name"=>$name);
if($c1->remove($arr)){
echo "<script>location='find.php'</script>";
}else{
echo "删除失败";
}
}else{
echo "数据为空!";
}
?>

详细信息:

<?php
include "conn.php";
$c1 = $db->c1;
//db.c1.find({_id:ObjectId("123456")};
$oid = new MongoId($_GET['id']);
$arr = array("_id"=>$oid);

$ret = $c1->findOne($arr);
var_dump($ret);
?>

第六部分 PHP实例相关推荐

  1. 第十六章 综合实例——《跟我学Shiro》

    目录贴: 跟我学Shiro目录贴 简单的实体关系图 简单数据字典 用户(sys_user) 名称 类型 长度 描述 id bigint 编号 主键 username varchar 100 用户名 p ...

  2. Access教程 第六章 数据库实例分析

    本章内容 ◆ 数据库总体分析和设计 ◆ 数据库的建立 ◆ 数据库对象的完善 本章是对前面学习的回顾.联系和巩固,通过建立一个微型的学生信息数据库实例,来灵活运用前面的知识. 一.数据库功能分析 所建立 ...

  3. python修行之路(六 三级菜单实例)

    三级菜单实例: menu = {     '北京':{         '海淀':{             '五道口':{                 'soho':{},            ...

  4. HTML 六十二 实例

    HTML 基础标签实例 一个简单的 HTML 文件 这个例子是一个很简单的 HTML 文件,使用了尽可能少的 HTML 标签.它向您演示了 body 元素中的内容是如何被浏览器显示的. 简单的段落 此 ...

  5. WCF学习(六):实例

    准备技术: WCF服务契约.数据契约等基础知识 Donet基本开发 内容概要: 三种实例激活类型 单调服务 会话服务 单例服务 实例类型       WCF支持三种实例类型:PerCall.PerSe ...

  6. Android OpenGL ES(六)创建实例应用OpenGLDemos程序框架 .

    有了前面关于Android OpenGL ES的介绍,可以开始创建示例程序OpenGLDemos. 使用Eclipse 创建一个Android项目 Project Name: OpenGLDemos ...

  7. [PMP]一张图带你了解项目管理49个过程(PMBOK第六版-附实例)

  8. 一张图带你了解项目管理49个过程(PMBOK第六版-附实例)

    转载仅供本人存档及后续研究使用,请尊重原创. 作者:杨波平,圣略咨询首席PMP讲师,美国 AACTP 国际注册培训师.项目管理专业讲师.微软 MCSE.

  9. mysql5.5多实例配置_mysql-5.5.32多实例配置

    一.安装依赖包 yum install ncurses-devel libaio-devel -y 二.下载cmake2.8.8和mysql.5.5.32 PS:我这里直接下载好了所以就用rz上传了 ...

最新文章

  1. 深度学习中的欠拟合和过拟合简介
  2. Kotlin学习笔记-基础语法
  3. mysql中find_in_set()函数的使用
  4. golang中的strings.IndexRune
  5. Windows驱动开发-_驱动对象学习和内核处理字符串初步
  6. Java泛型总结---基本用法,类型限定,通配符,类型擦除
  7. 28--仅仅反转字母
  8. Win32中常用消息
  9. (30)SPI接口调试丢数据解决(FPGA不积跬步101)
  10. Bailian2976 Bailian1936 All in All【字符串匹配】
  11. javascript 正则表达式小案例
  12. 10个深度学习软件_关于深度学习的10个问题
  13. 应用计算机测定线性电阻伏安特性实验结论,线性电阻和非线性电阻伏安特性曲线测定实验报告(共8篇).docx...
  14. django3 分布式路由、应用以及模型
  15. 计算机网络dce是什么意思,DTE与DCE的解释
  16. 带顶点动画的护盾效果——UnityShader学习笔记
  17. docker2-镜像原理及创建新的镜像
  18. 阿里云“网红“运维工程师白金:做一个平凡的圆梦人
  19. 题目60 相同字母消除法(栈)(ok)
  20. 7-23 币值转换(20 分)

热门文章

  1. CPU核数和线程数查找
  2. 二维数组子数组矩形和
  3. Lodop输出页面input文本框的最新值
  4. zabbix 3.2.1 安装 graphtree3.0.4 或 graphtree3.2.x
  5. Ztree手风琴效果(第三版)
  6. Asp.Net MVC中使用ACE模板之Jqgrid
  7. [Documentation]porting
  8. ArcGIS Server 中AJAX应用系列(3)
  9. 什么是k-NN算法?怎样实现?终于有人讲明白了
  10. SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道!