0

Can anyone tell me what am I doing wrong. I would like to display the last 5 rows in desc order.

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

Help would be deeply appreciated

4

2 回答 2

1

好吧,您始终可以按asc顺序选择五个,按 desc 顺序选择后五个,然后如果需要,您可以在 php 中反转它们的顺序(5 个值不是数组无法处理的任何东西)

代码:

$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
}
于 2013-09-01T19:23:49.047 回答
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;
于 2013-09-01T19:32:49.197 回答