使用mysql php在循环中一次获取两行

时间:2016-12-03 10:47:22

标签: php mysql mysqli

我想使用php从mysql的单个查询中获取两组数据。 下面的方法一次取一行,但我想一次取两行。

$qblog = "SELECT * FROM `blogs` WHERE status='1' ";
$qblog1 = mysqli_query($con,$qblog);
while($data = mysqli_fetch_array($qblog1)){

<div><?php echo $data['blog_title'];?></div>

<?php } ?>

我无法找到方法或任何线索。请提供建议。 谢谢。

2 个答案:

答案 0 :(得分:1)

根据您的评论,

  

...我想显示像这里的博客,homehero.org/blog,如果你检查元素,你会看到2&#39; blog-post&#39;在每一行&#39;中重复。

您必须使用计数器变量来跟踪每行显示的博客帖子数量。所以你的代码应该是这样的:

$qblog = "SELECT * FROM `blogs` WHERE status='1' ";
$qblog1 = mysqli_query($con,$qblog);

$counter = 1;
while($data = mysqli_fetch_array($qblog1)){ 
    if($counter % 3 == 0){
        // display the blogspots and style them
    }
    ++$counter;
} 

答案 1 :(得分:1)

我不确定除了在查询中使用LIMIT 2之外,还有一种方法可以一次获得两行。您可以添加一些条件以在单个迭代中显示两行,但在我看来,您需要在while内添加另一个循环,如下所示:

    $qblog = "SELECT * FROM `blogs` WHERE status='1'";
    $qblog1 = mysqli_query($con, $qblog);
    $post_count = 0;

    while($data = mysqli_fetch_array($qblog1)):
        if($post_count === 2):
            echo "<p>--------------------</p>";
            foreach($data_temp as $data_tmp):
?>
                 <div><?php echo $data_tmp['blog_title'];?></div>
<?php
            endforeach;
            echo "<p>--------------------</p>";
            $post_count = 0;
            unset($data_temp);

        endif;

        $data_temp[] = $data;
        $post_count += 1;

    endwhile;
?>

我刚看了@Rajdeep Paul提到的https://www.homehero.org/blog。这是关于布局,这意味着你可以用CSS来做,而不是在PHP中的条件。使用CSS方式更容易,而不是在PHP中创建条件。