繁体   English   中英

While循环仅传递第一个sql行

[英]While loop only delivering first sql row

源代码显示了LIMIT要求的16个项目。 但是,所有内容仅是“类别”列中的第一项。 我如何才能显示列的前16行,而不仅仅是第一行。

<div id="contentContainer" class="trans3d">
  <?php include("../scripts/db.php");
    $query="SELECT category FROM stories LIMIT 16"; 
    $result=mysqli_query($connection,$query);
  ?>
     <section id="carouselContainer" class="trans3d">
  <?php   
      while($data=mysqli_fetch_assoc($result)):
            $genre=$data['category'];
            $genre_path=$genre.".php"; 
            $genre_img_path="../images/genre_images/".$genre.".jpg";
  ?>

<a href="$genre_path">
    <figure class="carouselItem trans3d">
        <?php echo $genre;?>
            <img src="<?php echo $genre_img_path;?>" alt=""/>
    </figure>
</a>
<?php 
     endwhile;
     mysqli_close($connection);
 ?>
        </section>

</div>

将查询更改为:

$query = "SELECT DISTINCT category FROM stories LIMIT 16";

这将确保您获得16个不同的类别。 否则,选择哪16行是任意的,并且可能会选择恰好属于同一类别的16个故事。

如果您希望获得16个不同的类别(没有重复的类别),则应使用关键字DISTINCT

SELECT DISTINCT category FROM stories LIMIT 16

如果要从表stories的前16行中选择category (可能有重复项),那么您的要求是正确的。

如果问题是您没有获得所需的类别,则可以尝试使用ORDER BY子句确保第一个选定行的正确顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM