显示最后5行需要帮助。 PHP,MYSQL

时间:2013-09-01 19:16:41

标签: php mysql rows

谁能告诉我我做错了什么。我想以desc顺序显示最后5行。

$pull_activity_logs = mysql_query("SELECT * FROM activity_logs WHERE ac_no = '$logined_acc' order by id desc       limit 0,5") 
or die(mysql_error());  
while($row = mysql_fetch_array( $pull_activity_logs )) {
$activity_time = $row["datetime"];
$activity = $row["activity"];
}
echo "$activity";

帮助将深表赞赏

2 个答案:

答案 0 :(得分:1)

好吧,你总是可以在 asc 顺序中选择 first 5,这将是desc顺序的最后五个,然后你可以在php中反转他们的顺序(5个值不是数组无法处理的任何值)

CODE:

$pull_activity_logs = mysql_query("SELECT * FROM activity_logs WHERE ac_no = '$logined_acc' order by id asc limit 5"); 
$temp_arr = array();
while($row = mysql_fetch_array( $pull_activity_logs )) {
  $temp_arr[] = $row; //add to end
}
$final_arr = array_reverse($temp_arr);
foreach($final_arr as $row) //this doesn't have to be named $row
  $activity_time = $row["datetime"];
  $activity = $row["activity"];
  echo "$activity";
}

编辑:

现在,当我看到它时,可能整个问题在于你的回声的位置:

$pull_activity_logs = mysql_query("SELECT * FROM activity_logs WHERE ac_no = '$logined_acc' order by id desc limit 0,5") 
or die(mysql_error());  
while($row = mysql_fetch_array( $pull_activity_logs )) {
  $activity_time = $row["datetime"];
  $activity = $row["activity"];
echo "$activity"; //this goes INSIDE the loop
}

答案 1 :(得分:0)

您可以按升序检索前五个,然后然后使用子查询在SQL中对它们进行排序:

select al.*
from (SELECT al.*
      FROM activity_logs al
      WHERE ac_no = '$logined_acc'
      order by id asc
      limit 0, 5
     ) al
order by id desc;