首页 > 解决方案 > 如何从单个 mysql 查询中选择第一行然后选择其他行?

问题描述

我可能错过了明显的,我怎么能返回我需要的结果?看看这个简单的例子:


$fetch_image = "SELECT image_url FROM table"; //returns about 10 rows
$stmt_img = $db->prepare($fetch_image);
$stmt_img->execute();
$stmt_img_result = $stmt_img->get_result();

while ($row_img = $stmt_img_result->fetch_assoc()) {
     $image = $row_image['image_url'];
     echo 'Image url: '.$image.'<br>'; //this will echo out 10 times.
}

上面的代码遍历所有 10 行。如何从结果集中返回第一行,然后返回其他 9 行?

编辑:我正在尝试创建一个图像预览器,以便第一张图像显示为占位符/主图像,然后其他 9 行显示为缩略图,如下所示:

<div class="sp-wrap">
            <a href="images/1.jpg">
                <!-- This would be the placeholder/main/first image from the mysql result set -->
                <img src="images/1_tb.jpg" alt="">
            </a>
            <!-- In real life these would be dynamically generated -->
            <a href="images/3.jpg"><img src="images/3_tb.jpg" alt=""></a>
            <a href="images/4.jpg"><img src="images/4_tb.jpg" alt=""></a>
            <a href="images/5.jpg"><img src="images/5_tb.jpg" alt=""></a>
            <a href="images/6.jpg"><img src="images/6_tb.jpg" alt=""></a>
        </div>

标签: phpmysql

解决方案


一个简单的布尔变量可以区分第一行:

$first_row = true;

while ($row_img = $stmt_img_result->fetch_assoc()) {
     if ($first_row) {
         echo 'the first row';
         $image = $row_image['image_url'];
         echo 'Image url: '.$image.'<br>';
         $first_row = false;
     } else {
         $image = $row_image['image_url'];
         echo 'Image url: '.$image.'<br>'; //this will echo out 9 times.
     }
}

推荐阅读