【问题标题】:Display only last 5 records from database using Codeigniter 3使用 Codeigniter 3 仅显示数据库中的最后 5 条记录
【发布时间】:2016-06-03 08:24:43
【问题描述】:

我想从数据库中获取最近的记录,限制为 5。我使用了下面的代码但没有工作。也许我错过了什么或者整个查询是错误的。请指导我。谢谢

型号

 public function get_comments ($id) {
  $this->db->select('*');
  $this->db->order_by('id', 'ASC');  
  $this->db->from('Item_comments');
  $this->db->limit('5');
  $this->db->where(array('checklist_item_id' => $id, 'status' => 1));

  $query = $this->db->get();
  return $query->result_array();
 }

注意:查询工作正常并从 db 获取 5 条记录,但我想 将最近的位置放在底部。谢谢

【问题讨论】:

  • 如何但不工作
  • @splash58,我更新了简介。它正在工作,但我想在底部显示最近的记录
  • 您需要使用子查询select *from (your_query) t order by id desc。你能在 CI 中写子查询吗?
  • 我最近写的 - stackoverflow.com/questions/37360521/… 不一样,但是例子
  • 你为什么不使用return array_reverse($query->result_array());,因为这肯定会解决你的问题。

标签: php codeigniter


【解决方案1】:

要获得最后的结果,您需要对它们进行降序排序

$this->db->order_by("id", "desc");

当然你也可以用其他列代替id。

按升序排列结果:

$this->db->order_by("id", "asc");

要反转结果数组:

$results = get_comments();
$results = array_reverse($results);

或者如果您想在函数中执行此操作:

return array_reverse($query->result_array());

【讨论】:

  • 是的,我也使用了DESC,但最近从数据库添加的数据现在位于结果的顶部。我希望它被插入底部。
  • 那你应该改用asc
  • Desc 是正确的,但在视图中,但我希望视图中的结果是 asc/ 呃很难解释:p
  • 您需要数据库中的最后/最近 5 行,但希望将这 5 行显示为升序。对吗?
  • 是的@RejoanulAlam,:)
【解决方案2】:

试试这个

public function get_comments ($id) {

  $sql = 'SELECT * FROM (SELECT Item_comments.id i_id,Item_comments.column_name1,Item_comments.column_name2 FROM Item_comments WHERE Item_comments.checklist_item_id = ' . $id . ' AND Item_comments.status = 1 ORDER BY Item_comments.id DESC LIMIT 5) T1 ORDER BY i_id ASC';
  $query = $this->db->query($sql);


  return $query->result_array();
}

【讨论】:

  • “字段列表”中的未知列“Item_cmets.column_name1”
  • 我将 .column_names 更改为表字段,但 $id 未定义
  • 你的网址是这样的吗?? http:localhost/project_name/controller/get_comments/ID
  • 是的,这就是确切的网址
  • 如果是这样,您将永远不会收到未定义 ID 错误。 var_dump($id) & 调试
【解决方案3】:

试试这个

function get_comments($start,$limit,$id)
{
       $condition = array('checklist_item_id' => $id,'status'=>1);
       $this->db->order_by('id', 'DESC');       
       $this->db->limit($limit, $start);        
       $query  = $this->db->get_where('Item_comments',$condition);          
       $rows = $query->result();    
       return $rows;    
}

【讨论】:

    【解决方案4】:
    public function get_comments ($id) {
      $this->db->select('*');
      $this->db->order_by('id', 'DESC');  
      $this->db->from('Item_comments');
      $this->db->limit('5');
      $this->db->where(array('checklist_item_id' => $id, 'status' => 1));
    
      $query = $this->db->get();
      return $query->result_array();
     }
    

    【讨论】:

    • 对不起,这实际上和OP一样。
    【解决方案5】:

    试试这个:

    public function get_comments ($id) {
    
      $this->db->select('*');
      $this->db->order_by('id', 'DESC'); 
      $this->db->from('Item_comments');
      $this->db->limit('0,5');
      $this->db->where(array('checklist_item_id' => $id, 'status' => 1));
      $query = $this->db->get();
      return $query->result_array();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 2020-09-21
      • 2021-09-27
      • 2016-02-19
      • 1970-01-01
      • 2016-06-25
      相关资源
      最近更新 更多