如何使用while循环,直到从mySQL中的表中获得3行


How can I Use the while loop until i get 3 rows from a table in mySQL?

我想根据内容的时间戳来检索内容。我的查询是

SELECT link,title,timestamp,photo,link,author,comments FROM posts
    WHERE timestamp='*Todays Date -1*' LIMIT 6

如果查询返回零行,如何使用while语句查询2天前或3天前的结果?

为什么不查询完整的表(没有时间戳过滤器)并返回6行的限制。在这种情况下,没有理由迭代查询

SELECT link,title,`timestamp`,photo,link,author,comments
FROM posts
ORDER BY `timestamp` DESC
LIMIT 6

这将为您提供最多6条记录,并首先返回最近的记录。您应该对此查询的timestamp字段有索引,这是可以的,因为您应该已经有了索引,因为您以前试图对此字段进行筛选。

如果您遇到的情况是,在最后一天内显示的行数超过3行,并且您不需要显示前几天的记录,那么通过在循环结果集时检查值就可以很容易地实现这一点。

如果数据库中只有2条记录,这也可以防止您进入无限循环。

还要注意,timestamp是一个保留字,在使用此类字段名称时应小心。如果必须使用保留字作为字段名,则必须用反引号将其括起来。

也许for可以工作

$i=1
for ($row='';$count=0;$i++) {
    $result = mysql_query("SELECT link,title,timestamp,photo,link,author,comments FROM posts WHERE timestamp='*Todays Date -$i *' LIMIT 6");
    $count = mysql_num_rows($result);
}

我认为您想要的查询既过滤结果又排序。

SELECT link, title, timestamp, photo, link, author, comments
FROM posts
WHERE timestamp <= '*Todays Date -1*'
ORDER BY timestamp desc
LIMIT 6;

如果您实际上想要3行而不是6行(正如文章标题所建议的那样),那么将6更改为3