从foreach获取多行

时间:2014-07-04 19:05:26

标签: php html database foreach

所以在我的项目上我有帖子。基本上它们包括发布时间和发布内容。现在这是我的问题,我只能弄清楚如何检索一行而不是发布内容发布时间。这是我的代码

$posts = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    $posts[] =  $row['post_content'];
}

我是怎么回来的

<?php
foreach($posts as $post) {
   $post; 
?>

    <div class="content">
        <div class="post">
        <h1 class="message">
        <?php
            echo $post;
        ?>
        </h1>
        <p class="time">4 minutes ago</p>
        </div>
    </div>
    <?php
        }
    ?>

我试过

$posts = array();
$time = array();
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        $posts[] =  $row['post_content'];
        $time[] =  $row['post_time'];
    }

但这不起作用。我已经没想完了。任何帮助都会很棒。此外,如果有一个更清洁的方法,这将是很好的知道如何。谢谢

3 个答案:

答案 0 :(得分:0)

您可以使用嵌套数组:

$posts = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    $posts[] =  array(
        'post_content' => $row['post_content'],
        'time' => $row['post_time']     
    );

}

然后您的回音需要引用$post['post_content']$post['time']

答案 1 :(得分:0)

您使用$ post =值,每次都会覆盖您的值,请尝试:

array_push($posts, $row['post_content']);

在你的while循环中

答案 2 :(得分:-1)

您可以在while循环中简单地生成HTML。否则,您可能希望使用PDOStatement::fetchAll -

直接填充您的posts数组
$posts = $stmt->fetchAll();

并像往常一样使用它,例如 -

<?php foreach($posts as $post): ?> 
    <article>            
        <h1> <?php echo $post['title']; ?> </h1>               
        <p> <?php echo $post['content']; ?> </p>
    </article>
<?php endforeach; ?>