MongoDB查询仅显示最新文档

时间:2014-08-09 20:37:35

标签: php

我刚刚开始使用PHP与MongoDB,我想要做的是从数据库中获取数据,并自动调用它创建单独的post div。但是在我实现下面的代码之后会发生什么呢,它只是向我展示了最近的一个而不是我实际上收集的所有三个文档...

这是函数的代码,我知道这是一个非常基本的错误(可能):

function get_posts($cursor){
while ($cursor->hasNext()) {
    $entry = $cursor->getNext(); 
    $blog_body = "";
    $blog_body = $blog_body . '<div class="wrap-it">';
    $blog_body = $blog_body . '<div class="jumbotron">';
    $blog_body = $blog_body . '<div class="container">';
    $blog_body = $blog_body . "<h2>" . $entry['title'] ."</h2>";
    $blog_body = $blog_body . "<p>". $entry['description'] ."</p>";
    $blog_body = $blog_body . '<p><a class="rec-btn">Read more &raquo;</a></p>';
    $blog_body = $blog_body . '</div></div></div>';
  }
  return $blog_body;
 }

并且这样称呼:

<?php $posts = get_posts($cursor);
  echo $posts; ?>

2 个答案:

答案 0 :(得分:0)

错误在于 $ blog_body =“” (在while循环之前移动):

function get_posts($cursor){
  $blog_body = "";
  while ($cursor->hasNext()) {
    $entry = $cursor->getNext(); 
    $blog_body = $blog_body . '<div class="wrap-it">';
    $blog_body = $blog_body . '<div class="jumbotron">';
    $blog_body = $blog_body . '<div class="container">';
    $blog_body = $blog_body . "<h2>" . $entry['title'] ."</h2>";
    $blog_body = $blog_body . "<p>". $entry['description'] ."</p>";
    $blog_body = $blog_body . '<p><a class="rec-btn">Read more &raquo;</a></p>';
    $blog_body = $blog_body . '</div></div></div>';
  }
  return $blog_body;
 }

答案 1 :(得分:0)

在这一行中,您将重置每次新迭代的$ blog_body内容。

$blog_body = "";

这样称呼

function get_posts($cursor) {
    $blog_body = "";

    while ($cursor->hasNext()) {
        $entry = $cursor->getNext(); 

        $blog_body .= '<div class="wrap-it">';
        $blog_body .= '<div class="jumbotron">';
        $blog_body .= '<div class="container">';
        $blog_body .= "<h2>" . $entry['title'] ."</h2>";
        $blog_body .= "<p>". $entry['description'] ."</p>";
        $blog_body .= '<p><a class="rec-btn">Read more &raquo;</a></p>';
        $blog_body .= '</div></div></div>';
    }

    return $blog_body;
}