-3

嗨,我有一个名为 Log 的数据库表,我只想显示这个 dabatase 的最后 5 行。这是我的代码:

php:

function get_log_data(){
    $query = "SELECT * FROM log";
    mysql_query("SET NAMES 'utf8'");
    $result = mysql_query($query, $this->connection);

    if(!$result) //ERROR IN YOUR SQL QUERY
    return false;

    if(mysql_num_rows($result)==0) //NO ROWS IN TABLE pages
    return false;

    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) // CHANGE THE RESULT TO 2 DIMMENSIONAL ARRAY
    {
        $returned_array[] = $row;
    }
    return $returned_array;
}

在 html 上:

$log_data = $func->get_log_data();

<table cellspacing="0" cellpadding="0" style="width: 100%">
    <?php
        foreach($log_data as $key=>$value)
        {
            echo '<tr >';
            echo '<td class="count" style="width:20px;text-align:center;">.</td><td>'. $value['action'].' : '.$value['user'].' .</td>';
            echo '</tr >';
        }
    ?>
</table>

我只想最后 5 个,不要再多谢了。

4

4 回答 4

3

解决方案:1

在查询中使用LIMIT 5 条记录

SELECT * FROM log ORDER BY yourcolumnname DESC LIMIT 5

解决方案:2

使用逃生器;)

$i=0;
foreach($log_data as $key=>$value)
    {
    if($i==5)
     break;
    echo '<tr >';
    echo '<td class="count" style="width:20px;text-align:center;">.</td><td>'. $value['action'].' : '.$value['user'].' .</td>';
    echo '</tr >';
$i++;

    }
于 2013-08-22T08:14:23.217 回答
3

使用查询:


$query = "SELECT * FROM log order by PRIMARY_KEY DESC limit 5";


使用 foreach


for($i=(count($log_data)-1); $i>=count($log_data)-5;$i++) {
    //your logic
}
于 2013-08-22T08:16:32.777 回答
0
$i = 1;
foreach($log_data as $key=>$value)
{
   if ($i <= 5)
   {
      echo '<tr >';
      echo '<td class="count" style="width:20px;text-align:center;">.</td><td>'. $value['action'].' : '.$value['user'].' .</td>';
      echo '</tr >';
   }
   $i++;
}

但是最好在 SQL 中使用 LIMIT ,除非您想将该查询结果保留为其他内容,而不仅仅是为了那个foreach

于 2013-08-22T08:14:47.070 回答
0
SELECT * FROM (
    SELECT * FROM log ORDER BY id DESC LIMIT 5
) sub
ORDER BY id ASC
于 2013-08-22T08:25:12.247 回答