如何从sql中跳过一行?

Posted

技术标签:

【中文标题】如何从sql中跳过一行?【英文标题】:How to skip a row from sql? 【发布时间】:2017-02-10 05:23:36 【问题描述】:

嗨,phpmysql 的新手。试图找到如何按降序跳过我的 sql 表循环中的第一个或最后一个值?我想先显示最近添加的行,但不显示最后添加的行。

<tr>
<?php
    $page=$_GET['pages'];    /* created in index.php(pages.php?pages=m_$title) */
    $nage="z_".$page;
    $query="SELECT * FROM `$nage` ORDER BY a_id DESC LIMIT 0, 1" ;
    $run=mysqli_query($conn,$query);
    while($row=mysqli_fetch_array($run)) 
        $page_title=$row['title'];
        $img_src=$row['img_src'];

        // $page_desc=$row['story'];

        echo  "<tr bgcolor='pink'>
                   <td style='width:40%'>
                       <div class='titleDivX'>
                           <img class='imgFrame'src='$img_src' alt='tasvir'/>
                           <h5> $page_title</h5>
                       </div>
                   </td>
                   <td bgcolor='yellow'>
                       <div class='titleDivX'> </div>
                   </td>
               </tr>";
    
?>

【问题讨论】:

在开始之前获取计数,并在while 内有一个if 块? mysqli_fetch_array 使指针前进,因此您可以在 while 循环之前调用一次 mysqli_fetch_array($run) 您只返回一行LIMIT 0, 1。那么你想跳过什么。第一行和最后一行是唯一的行。 节省时间扔掉脚本 我投票决定将此问题作为题外话结束,因为问题和提供的代码放在一起看时毫无意义 judy 太高了。我们这里不需要那种语言。 【参考方案1】:

您可以使用here 中描述的mysqli_num_rows 函数。如果您想查找第一行或最后一行,则可以替换这部分代码

$run=mysqli_query($conn,$query);
while($row=mysqli_fetch_array($run)) 

有了这个

$run=mysqli_query($conn,$query);
$rowsCount=mysqli_num_rows($run);
$count = 0;
while($row=mysqli_fetch_array($run)) 
    $count++;       
    $isFirst = ($count == 1) ? true : false;
    $isLast = ($count == $rowsCount) ? true : false;

然后您可以将$isFirst$isLast 变量用于IF 语句。例如,如果您想跳过最后一行,则可以使用如下代码:

<?php
    $page=$_GET['pages'];    /* created in index.php(pages.php?pages=m_$title) */
    $nage="z_".$page;
    $query="SELECT * FROM `$nage` ORDER BY a_id DESC LIMIT 0, 1" ;
    $run=mysqli_query($conn,$query);
    $rowsCount=mysqli_num_rows($run);
    $count = 0;
    while($row=mysqli_fetch_array($run)) 
        $count++;       
        $isFirst = ($count == 1) ? true : false;
        $isLast = ($count == $rowsCount) ? true : false;

        if (!$isLast) 
            $page_title=$row['title'];
            $img_src=$row['img_src'];

            // $page_desc=$row['story'];

            echo  "<tr bgcolor='pink'>
                       <td style='width:40%'>
                           <div class='titleDivX'>
                               <img class='imgFrame'src='$img_src' alt='tasvir'/>
                               <h5> $page_title</h5>
                           </div>
                       </td>
                       <td bgcolor='yellow'>
                           <div class='titleDivX'> </div>
                       </td>
                   </tr>";
        
    
?>

【讨论】:

代替$isFirst = ...$isLast = ...,您可以简单地使用if($count == 1 || $count == $rowsCount) continue; 来进一步优化您的代码。 另外,鉴于您当前的代码,if (!$isLast) ... 应该是 if (!$isFirst &amp;&amp; !$isLast) ... @RajdeepPaul 是的,你是对的,但我想展示什么是第一个和什么是最后一个使用名称用于教育目的。 @RajdeepPaul 我的if (!$isLast) 代码是正确的。查看我的示例的问题(第一个或最后一个)和描述例如,如果您想跳过最后一行,那么您可以使用这样的代码 哦,我的错,我认为这是第一个最后一个值。您的回答几乎涵盖了问题的各个方面,我 +1。 :-)

以上是关于如何从sql中跳过一行?的主要内容,如果未能解决你的问题,请参考以下文章

在 Fortran90 中从文本文件中跳过一行

如何根据某些条件在 MSSQL 游标中跳过一行(迭代)?

Python 3.2 在 csv.DictReader 中跳过一行

如何从mysql中的表中跳过行

如何在 SSDT 项目中跳过构建 DACPAC

如何在正则表达式中匹配 \n 但从以下文本中跳过 n?