PHP while循环 - 排除最近的行?

时间:2011-09-25 19:18:05

标签: php

我有一个加载用户注释的PHP while循环 - 我需要排除数据库中最新的行。

$sql = "SELECT c.trackid, c.comment, c.time, c.userid, u.id, u.username FROM 
comments c
LEFT JOIN users u
ON u.id = c.userid
WHERE trackid='$trackid'
ORDER BY c.time DESC";



$i=1;
while ($row = mysql_fetch_assoc($result)) {
  echo "<div class=\"commentDivs\">" . $row['time'] ."<br><br> " . $row['username'] . "<div class=\"userPostedComments\">" . $row['comment'] . "</div></div>";
}

如何从循环中排除最近的行?

6 个答案:

答案 0 :(得分:1)

如果您的查询返回按最近降序排序的结果,您可以通过指定OFFSET 1在查询方面执行此操作。

或者,您可以使用mysql_data_seek移动行指针,但需要。

答案 1 :(得分:1)

你可以这样做,你必须先运行2个查询才能找到最新评论的ID ....

$sql = mysql_query("SELECT id FROM tbl_name ORDER BY id DESC");
$row = mysql_fetch_array($sql);
$latest_id = $row['id'];

这将为您提供最新的ID,然后您可以像这样运行下一个查询

$sql1 = mysql_query("SELECT * FROM tbl_name WHERE id != '$latest_id' ORDER BY id DESC");
 while($row1 = mysql_fetch_array($sql1))
 {    }

让我们知道你要做什么,可能会让你的代码更干净

答案 2 :(得分:1)

SELECT c.trackid, c.comment, c.time, c.userid, u.id, u.username FROM 
comments c
LEFT JOIN users u
ON u.id = c.userid
WHERE trackid='$trackid'
AND c.time != ( SELECT max(c.time) FROM comments WHERE u.id = c.userid )
ORDER BY c.time DESC

答案 3 :(得分:0)

请提供数据库结构和sql查询以便我们提供帮助,您可以使用ORDER BY id或将时间存储为DATETIMEORDER BY time在SQL查询中

答案 4 :(得分:0)

您可以使用

$rows = array();
while ($row = mysql_fetch_array($result))
{
    $rows[] = $row;
}

然后您可以轻松地将$ rows用作数组,并且可以进入for循环直到count($ rows)-1

for($i = 0; $i < count($rows) - 1 ; $i++)
{
    print '<div class="commentDivs">' . $rows[$i]['time'] .'<br><br> ' . $rows[$i]['username'] . '<div class="userPostedComments">' . $rows[$i]['comment'] . '</div></div>';
}

编辑:或者你可以跳过特定的行,如果你还没有按照时间进行修改......

或者如果你在我将loop-header修改为

的时候有ordert DESC
for($i = 1; $i < count($rows) ; $i++)

答案 5 :(得分:0)

这是一个简单的解决方案,使用您当前的查询:

for($i=1; $i < mysql_num_rows($result); $i++) {
    mysql_data_seek($result, $i);
    $row = mysql_fetch_assoc($result);
    echo "<div class=\"commentDivs\">" . $row['time'] ."<br><br> " . $row['username'] . "<div class=\"userPostedComments\">" . $row['comment'] . "</div></div>";
}