2015-09-27 240 views
0

我正在使用codeigniter;从MySQL中选择最后N行 - codeigniter

我想从我的表中获得最后N行。

在我的查询我想最后200行:

  $this->m_general->select('count(*)'); 
     $this->m_general->from('pm'); 
     $result_count_query = $this->m_general->get(); 
     $count_query = $result_count_query->num_rows(); 



$data['all']  = $this->m_general->get('pm', array('admin_delete'=>0) , $count_query-200,$count_query, array('admin_seen'=>'asc' , 'id'=>'desc')); 

但它没有返回。

我的错在哪里?

更新

下面的查询不工作得很好,它返回所有记录:

$data['all']  = $this->m_general->get('pm', array('admin_delete'=>0) ,200, array('admin_seen'=>'asc' , 'id'=>'desc')); 
+2

为什么不按方向只是改变您的订单,并做200强,而不是无偏移。 –

+0

更新了我的问题。 –

+2

get方法的api是什么。您的示例中有不同数量的参数。 –

回答

0

退房的API

https://ellislab.com/codeigniter/user-guide/database/active_record.html

看起来升ike你不能用get方法做到这一点。 根据API构建您的查询。

$this->m_general->limit(200); 
$this->m_general->order_by("admin_seen", "asc"); 
$this->m_general->order_by("id", "desc"); 

$data['all']  = 
$this->m_general->get('pm', array('admin_delete'=>0)); 
0

这解决问题

$query = $this->db->query("SELECT * FROM pm WHERE admin_delete= 0 AND admin_seen=0 ORDER BY id DESC LIMIT 200"); 
$result = $query->result_array(); 
$count = count($result); 

if(empty($count)) 
{ 
    echo 'array is empty'; 
} 
else{ 
    return $result; 
}