从表中选择前50行,但显示最早的到最新的


Select top 50 rows from a table, but display oldest to newest?

谁能告诉我如何解决这个问题?

我想从我的SHOUTBOX表中按id调用前50行,但在div中按升序显示它们(最新的行(最新的)在底部)

例如

,

最近的行是id 200,我把150 - 200行命名为,将它们显示在div中,如;

150年,151年,152年,..等..200 & lt; & lt; & lt;DIV

最后一行

我的PHP代码现在看起来像这样;

$recall=mysql_query("SELECT *, DATE_FORMAT(timepost,'%H:%i:%s') as timepost FROM shoutbox ORDER BY id DESC LIMIT 50");
    while($comm=mysql_fetch_object($recall)){
      if ($comm->poster == "System"){
      print"<font color=#3399FF>$comm->timepost-<strong><a href='profile.php?viewuser=$comm->poster' target='iframecontent'><font color=#3399FF>$comm->poster</font></a></strong>: </font>";
    echo replace($comm->post);
    echo"<br>";
      }

但是它返回div中的数据,比如;

200年,199年,198年,..等..150 & lt; & lt; & lt;DIV

最后一行

请问有人能帮忙吗?

注意:我目前正在通过我所有的页面和转换所有mySQL查询到PDO

供将来参考,如果您正在转换为PDO,在不更改查询的情况下,本页上有向后阅读的确切答案。http://www.php.net/manual/en/pdostatement.fetch.php。

现在这将工作:

SELECT *, DATE_FORMAT(timepost,'%H:%i:%s') AS timepost FROM (SELECT * FROM shoutbox ORDER BY id DESC LIMIT 50) AS foo ORDER BY id ASC

好的,试试这个:

$recall=mysql_query("SELECT *, DATE_FORMAT(timepost,'%H:%i:%s') as timepost FROM (SELECT * FROM shoutbox ORDER BY id DESC LIMIT 50) ORDER BY id ASC");

ORDER BY id DESC替换为ORDER BY id

您输入了错误的命令,您必须输入ASC而不是DESC。以下是您正确的查询:

$recall=mysql_query("SELECT *, DATE_FORMAT(timepost,'%H:%i:%s') as timepost FROM shoutbox ORDER BY id ASC LIMIT 50");
    while($comm=mysql_fetch_object($recall)){
      if ($comm->poster == "System"){
      print"<font color=#3399FF>$comm->timepost-<strong><a href='profile.php?viewuser=$comm->poster' target='iframecontent'><font color=#3399FF>$comm->poster</font></a></strong>: </font>";
    echo replace($comm->post);
    echo"<br>";
      }

将查询改为:

$recall = mysql_query("SELECT *, DATE_FORMAT(timepost,'%H:%i:%s') as timepost 
   FROM shoutbox ORDER BY id ASC LIMIT 50");