如何使用foreach仅显示DataBase中的最后5行

时间:2013-08-22 08:12:28

标签: php

您好我有一个名为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 个答案:

答案 0 :(得分:3)

<强>解决方案:1

在查询中使用 LIMIT 5条记录

SELECT * FROM log ORDER BY yourcolumnname DESC LIMIT 5

<强>解决方案:2

使用escaper;)

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

    }

答案 1 :(得分: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
}

答案 2 :(得分: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

答案 3 :(得分:0)

SELECT * FROM (
    SELECT * FROM log ORDER BY id DESC LIMIT 5
) sub
ORDER BY id ASC