简体   繁体   English

用PHP显示MongoDB收集结果

[英]Displaying MongoDB collection result with PHP

I am following a book: "PHP and MongoDB Web Development" 我正在看一本书:“ PHP和MongoDB Web开发”

Here they created a dbconnection.php script: 他们在这里创建了dbconnection.php脚本:

<?php

class DBConnection
{
    const HOST   = 'localhost';
    const PORT   = 27017;
    const DBNAME = 'myblogsite';

    private static $instance;

    public $connection;    
    public $database;

    private function __construct()
    {
        $connectionString = sprintf('mongodb://%s:%d', DBConnection::HOST, DBConnection::PORT);

        try {

            $this->connection = new Mongo($connectionString);
            $this->database = $this->connection->selectDB(DBConnection::DBNAME);

        } catch (MongoConnectionException $e) {
            throw $e;
        }
    }

    static public function instantiate()
    {
        if (!isset(self::$instance)) {
            $class = __CLASS__;
            self::$instance = new $class;
        }

        return self::$instance;
    }

    public function getCollection($name)
    {
        return $this->database->selectCollection($name);
    }
}

I would like to use this script to list blog posts via a file called blogs.php: 我想使用此脚本通过名为blogs.php的文件列出博客文章:

<?php

require_once('dbconnection.php');

class Blogs
{
    const COLLECTION = 'articles';

    private $_mongo;
    private $_collection;
    private $_blogs;

    public function __construct()
    {
        $this->_mongo = DBConnection::instantiate();
        $this->_collection = $this->_mongo->getCollection(Blogs::COLLECTION);
    }


}

$blogs = new Blogs();


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" href="style.css" /> 
    <title>My Blog Site</title>
    </head>

          <body>
              <div id="contentarea">
                  <div id="innercontentarea">
                      <h1>My Blogs</h1>

                      <?php while ($blogs->hasNext()):
                        $article = $blogs->getNext(); ?>
                        <h2><?php echo $article['title']; ?></h2>
                        <p><?php echo substr($article['content'], 0, 200).'...'; ?></p>
                        <a href="blog.php?id=<?php echo $article['_id']; ?>">Read more</a>
                      <?php endwhile; ?>
                  </div>
              </div>
          </body>
</html>

I am unsure how to proceed from here. 我不确定如何从这里继续。

You have a reference to the Blogs collection; 您可以参考Blogs集合; next step is to query against it: 下一步是对其进行查询:

public function __construct()
{
    $this->_mongo = DBConnection::instantiate();
    $this->_collection = $this->_mongo->getCollection(Blogs::COLLECTION);
    $this->_blogs = $this->_collection->find();
}

This will give you a reference to the result set which you can iterate and get the individual blog documents. 这将为您提供结果集的参考,您可以对其进行迭代并获取单个博客文档。 You'll have to then figure out how you want to make those articles accessible to your php/html. 然后,您必须弄清楚如何使php / html可以访问这些文章。

(was using this as visual reference http://devzone.zend.com/1730/getting-started-with-mongodb-and-php/ ) (使用它作为可视参考http://devzone.zend.com/1730/getting-started-with-mongodb-and-php/

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

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