Php 需要在循环50次后停止循环

Php 需要在循环50次后停止循环,php,mysql,Php,Mysql,我使用while循环在sql表中显示数据,并将列表项中每一行的数据分组。我需要在显示sql表中的50行之后停止循环。如果有帮助,$id是唯一的,并且对于每一行都是唯一的 <?php include("db.php"); $query="SELECT * FROM `stories`"; $result=mysqli_query($connection,$query); ?>

我使用while循环在sql表中显示数据,并将列表项中每一行的数据分组。我需要在显示sql表中的50行之后停止循环。如果有帮助,$id是唯一的,并且对于每一行都是唯一的

    <?php
            include("db.php");
            $query="SELECT * FROM `stories`";
            $result=mysqli_query($connection,$query);
            ?>

            <li>

            <?php
            while ($data = mysqli_fetch_assoc($result)):
            $id = $data['id'];
            $img_link = $data['img_link'];
            $page_path = $data['page_path'];
            $tag_alt = $data['tag_alt'];
            $category = $data['category'];
            if(is_null($page_path)){$page_path = "#";}
            ?>

            <img alt="<?php echo $tag_alt; ?>" src="<?php echo $img_link; ?>" width="200" height="200">

            <h3><a href="#"><?php echo $title; ?></a></h3>
            <a href="categories/<?php echo $category; ?>.html"><label> </label><?php echo $category; ?></a></span>
            <p><?php echo $tag_alt; ?></p>

            </li>
                            <?php
            endwhile;
            mysqli_close($connection);
            ?>

  • “width=“200”height=“200”>


  • 在查询中,您可以这样给出

    (对于sqlserver):

    (对于Mysql或postgre):

    若你们想在下一页中显示51到100的结果,你们应该将页码或计数器传递给一个页面,同时你们也应该稍微修改一下你们的sql

     $query="SELECT * FROM `stories`";
    
    换成

     $query="SELECT * FROM `stories` LIMIT 50 ";
    

    第一个选项是您可以像这样使用
    限制50

     $query="SELECT * FROM `stories` LIMIT 50";
    
    第二个是,如果不想使用LIMIT 50,可以维护一个计数器变量

     <?php
                $counter = 0;
                while ($data = mysqli_fetch_assoc($result))
                {
                    $counter+=1;
                    $id = $data['id'];
                    $img_link = $data['img_link'];
    
                     if($counter>50)
                     {
                            break;
                     } 
    
    这是您的解决方案吗

    $i=1;
     while ($data = mysqli_fetch_assoc($result) && $i <= 50):
    {
      //Code Here
      $i++;
    }
    
    $i=1;
    
    而($data=mysqli\u fetch\u assoc($result)&&$i理想的方法应该是进行一个限制为50的查询

     $query="SELECT * FROM `stories` LIMIT 50 ";
    
    但是,如果出于某种原因,您需要在同一页面中显示后一个数组,并且在本例中只想显示前50个,您可以执行以下操作:

     while ($data = mysqli_fetch_assoc($result)){
        $array[]=$data;
     }
    
    for($i=0;$i<=49;$i++){
        $id = $array[$i]['id'];
         //etc...
    }
    
    while($data=mysqli\u fetch\u assoc($result)){
    $array[]=$data;
    }
    
    对于($i=0;$i谢谢大家的帮助。使用限制函数似乎效果最好。我添加了介于和之间的RAND以改进功能

    <?php include("db.php"); $query="SELECT * FROM `stories` WHERE id BETWEEN 1 AND 200 order by RAND() LIMIT 20"; $result=mysqli_query($connection,$query); ?
    

    为什么不把
    限制50
    放在SQL中?$query=“SELECT*FROM stories LIMIT 50”";我没有在问题中提到它,但我想以“50行一组”的方式显示数据,并使用一些“上一步/下一步”按钮一次移动50行。我不认为这个限制会起作用?你需要为它分页。@buzrw如果你想分页,你需要先将分页的html放在页面中,几乎总是最好将数据排序/限制在e查询本身,这样您就可以避免在PHP代码中进行查询。IMO+1使您的代码更干净
     while ($data = mysqli_fetch_assoc($result)){
        $array[]=$data;
     }
    
    for($i=0;$i<=49;$i++){
        $id = $array[$i]['id'];
         //etc...
    }
    
    <?php include("db.php"); $query="SELECT * FROM `stories` WHERE id BETWEEN 1 AND 200 order by RAND() LIMIT 20"; $result=mysqli_query($connection,$query); ?