【问题标题】:fetching two rows at a time in loop在循环中一次获取两行
【发布时间】:2016-12-03 10:47:21
【问题描述】:

我想使用 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 条记录的方式显示。
  • 只需在您的 SELECT 查询中添加一个 LIMIT 2 并循环遍历结果集。
  • 如果我假设有 20 条记录,那么 LIMIT 2 将如何工作。
  • 行被一一获取。没有办法逐个 2 获取它们。创建一些 php 代码来检查是否获取了两行。

标签: php mysql mysqli


【解决方案1】:

根据您的评论,

...我想显示像这里这样的博客,homehero.org/blog,如果你检查元素,你会在每个“行”中看到 2 个“博客帖子”重复。

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

$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;
} 

【讨论】:

    【解决方案2】:

    我不确定除了在查询中使用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 做条件要容易得多。

    【讨论】:

    • 为什么$data_temp 在被声明之前就被迭代了?
    【解决方案3】:

    如果我理解正确的话,这并不难。

    $sql = "select * from blogs where status = '1'";
    $qblog1 = mysqli_query($con, $sql);
    while ($row1 = mysqli_fetch_array($qblog1)) {
       $row2 = mysqli_fetch_array($qblog1);
    }
    

    因为您正在从相同的结果集中读取指针,所以更新得很好。

    【讨论】:

    • 请分享更多细节。这如何解决问题?正如 OP 在评论部分中所写:“我正在处理一个页面,其中博客以一次显示 2 条记录的方式显示”-您的代码如何帮助实现这一目标?
    猜你喜欢
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多