如何从sql中跳过一行?
Posted
技术标签:
【中文标题】如何从sql中跳过一行?【英文标题】:How to skip a row from sql? 【发布时间】:2017-02-10 05:23:36 【问题描述】:嗨,php 和 mysql 的新手。试图找到如何按降序跳过我的 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 && !$isLast) ...
@RajdeepPaul 是的,你是对的,但我想展示什么是第一个和什么是最后一个使用名称用于教育目的。
@RajdeepPaul 我的if (!$isLast)
代码是正确的。查看我的示例的问题(第一个或最后一个)和描述例如,如果您想跳过最后一行,那么您可以使用这样的代码
哦,我的错,我认为这是第一个和最后一个值。您的回答几乎涵盖了问题的各个方面,我 +1。 :-)以上是关于如何从sql中跳过一行?的主要内容,如果未能解决你的问题,请参考以下文章