从表中选择前50行,但显示最旧到最新?

时间:2013-03-30 15:28:34

标签: php sql

有人可以就如何解决这个问题提出建议吗?

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

例如

;

最近一行是id 200, 我想打电话给150 - 200行, 在div中显示它们;

150 151, 152, 。 。 。等等 。 。 200<<< 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

5 个答案:

答案 0 :(得分:1)

ORDER BY id DESC替换为ORDER BY id

答案 1 :(得分:1)

为了将来参考,如果您要转换为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

答案 2 :(得分:1)

好的,试试这个:

$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");

答案 3 :(得分:0)

订单命令错误,您必须放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>";
      }

答案 4 :(得分:0)

将您的查询更改为:

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