我有一个加载用户注释的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>";
}
如何从循环中排除最近的行?
答案 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
或将时间存储为DATETIME
和ORDER 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 DESCfor($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>";
}