MongoDB学习系列(2)--使用PHP访问MongoDB

第一部分:介绍

在Windows上安装最新MongoDB步骤非常的简单,这里不做介绍。但是如果你安装的时候没有将MongoDB作为服务运行,每次你都要使用cmd切换到指定的目录下,然后在cmd中启动MongoDB服务,然后再使用另外一个cmd运行Javascript Shell。所以我自己创建了2个.bat文件来简化这个操作。

Run_MongoDB_Service.bat代码为:

d:
cd d:\mongodb\bin
mongod --dbpath d:\mongodb\data
Run_MongoDB.bat代码为:
d:
cd d:\mongodb\bin
mongo

我们使用Javascript Shell操作都在Run_MongoDB的命令框中进行。

第二部分:安装PHP Driver for MongoDB

安装步骤:

步骤1.进入网站http://docs.mongodb.org/ecosystem/drivers/php/ 根据步骤和提示下载最新PHP Driver。很多博客和帖子都介绍,都是把“php_mongo.dll”复制到php extension的目录中。其实下载文件如下图所示,不仔细的同学就要迷糊了,我只要一个dll,怎么给我下载了这么多文件,而且我也不知道选择哪个?

步骤2:我先将php_mongo-1.4.2-5.4-vc9.dll复制到php安装目录的ext中,5.4表明是我安装的PHP版本是5.4。所以大家要根据自己的安装类型选择正确的dll。nts:not thread safe。具体情况我也不明白,我安装php时候下载的是线程安全类型,所以复制就不要复制有nts结尾的dll。另外x86_64是说明安装MongoDB的版本支持64位。我安装的是32位,所以没有选择它。

步骤3:然后在php.ini添加了一行代码,引入php_mongo类库。

extension=php_mongo-1.4.2-5.4-vc9.dll

MongoDB for PHP Driver下载地址是存放在aws中s3上,访问速度还不错。

https://s3.amazonaws.com/drivers.mongodb.org/php/index.html

步骤4:检验php driver for MongoDB是否成功,我们只要新建一个测试页面。输入代码

<?php

echo phpinfo();

?>

如果页面出现下面结果,表明安装成功。

第三部分:使用PHP连接MongoDB示例程序

初学MongoDB的人都习惯使用JavaScript Shell来操作MongoDB。通俗易懂,是入门学习MongoDB最佳的方法。下面演示使用PHP连接MongoDB,然后往数据库里面插入一条数据。代码如下:

<?php
    /*echo phpinfo();*/
    $action=(!empty($_POST['btn_submit'])&&($_POST['btn_submit']==='Save'))?
    "save_article":
    "show_form";
    switch($action){
        case "save_article":
        try{
        $connection=new Mongo();
        //选择数据库
        $database=$connection->selectDB("myblogsite");
        //选择集合
        $collection=$database->selectCollection("articles");
        
        $article=array(
            'title'=>$_POST['title'],
            'content'=>$_POST['content'],
            'saved_at'=>new MongoDate()
        );
        //向集合插入记录
        $collection->insert($article);
        }catch(MongoConnectionException $e){
            die("Failed to connect the MongoDB" .$e->getMessage());
        }
        break;
        case "show_form":
        default:
        break;
    }
    
?>
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>PHP Connect the MongoDB Demo</title>
    </head>
    <body>
        <?php if($action==='show_form'): ?>
        <!--显示提交表单-->
        <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
            
            <div>
            <label for="title">Ttile:</label>
            <input type="text" name="title" id="title"/>
            </div>
            <div>
                <label for="content">Content:</label>
                <textarea name="content" id="content" cols="70" rows="10"></textarea>
            </div>
            <div>
                <input type="submit" value="Save" name="btn_submit" id="btn_submit"/>
            </div>
        </form>
        <?php else: ?>
        <!--显示提交成功内容-->
        <div>
            Article saved in MongoDB ._id:<?php echo $article['_id']; ?><br/>
            Blog title:<span><?php echo $article['title'];?></span>
                    <a href="test.php">Write another blog?</a>
                </div>
        <?php endif; ?>
    </body>
</html>

1.编辑界面

2.提交成功之后界面

最后我们可以使用JavaScript Shell查看刚插入成功的记录。截图如下:

<!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } -->

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

操作Linux这些命令够用了

操作Linux这些命令够用了 玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因...

45560
来自专栏Python

linux每日命令(20):find命令概览

Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的...

10320
来自专栏开源优测

AutoLine源码分析之入口源码

AutoLine开源平台是一个开源自动化测试解决方案,基于RobotFramework进行二次开发,支持RobotFramework几乎所有的库。

12930
来自专栏拂晓风起

cocos2d-js 3.0 rc0 编译release报错 value for keystore is not valid. it must resolve to a single path

12320
来自专栏linux系统运维

zip压缩以及tar打包

245100
来自专栏zcqshine's blog

android6.0 drawable 的变化

37970
来自专栏Jackie技术随笔

多进程TCP并发服务器

我们的期望应该是一台服务器同时为多个客户服务。实现并发服务器最简单的办法就是为每个客户均fork一个子进程。

1.3K80
来自专栏张善友的专栏

Enterprise Library 4 缓存应用程序块的设计

缓存应用程序为以下目的而设计: 提供一个大小可管理的 API 集合。 允许开发人员添加标准的缓存操作到他们的应用程序中,而不用学习应用程序块的内部工作。 ...

22260
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(二十) ——Redis命令在redis服务器执行过程

《Redis设计与实现》读书笔记(二十) ——Redis命令在redis服务器执行过程 (原创内容,转载请注明来源,谢谢) 序:redis服务器是redis一切...

37240
来自专栏技术博文

linux最常用的20条命令

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命...

35440

扫码关注云+社区

领取腾讯云代金券