2013-11-15 69 views
0

我目前使用Codeigniter。如下所示,查詢查找行數,然後將其發送到視圖。但是,該視圖不顯示實際的計數。 DB(InnoDB)的實際計數爲1001,但在我的視圖中最多顯示爲1000。有任何想法嗎?MySql計數不準確。 Codeigniter

Model: 
    public function check_source_email($location){ 
    $query="SELECT COUNT(*) as row_count FROM feedback WHERE location = '$location' AND source_lead = 'Email' "; 
    $count=$this->db->query($query)->result(); 
    return $count[0]->row_count; 
} 

    Controller: 
    $data['email'] = $this->Stats->check_source_email($location); 

    View: 
    <strong>Email Listing</strong><span class="pull-right"><?php echo $email; ?></span>    
+0

你的意思是,如果你運行通過命令行界面,查詢,你/讓1001,但如果你通過PHP運行笨你得到1000? –

+0

沒錯。我不知道爲什麼。我根本沒有任何'LIMIT TO'。我知道使用InnoDB有一些限制,但我不確定延伸到什麼程度。 – crg821

+0

您是否嘗試過在字段上進行選擇並返回num_rows()?只是爲了看看它是否有所作爲?像'SELECT'ID' FROM'feedback'' ... –

回答

1

使用num_rows

public function check_source_email($location){ 

    $query = $this->db->get_where('feedback',array('location'=>$location,'source_lead'=>'Email')); 
    return $query->num_rows(); 

} 
+0

這是否仍然選擇來自反饋的所有數據?它基本上是'$ results = $ db-> query('SELECT * FROM feedback'); COUNT($結果); '這非常低效。 [我想你想要](http://stackoverflow.com/a/7037000/46675)'count_all_results()'而不是。 –

0

首先,我會嘗試做的事情的笨方法,如果你用笨工作:

public function check_source_email($location) { 
    return $this->db 
    ->where('location', $location) 
    ->where('source_lead', 'Email') 
    ->count_all_results('feedback'); 
} 

理論上應該返回正確的結果,但我不知道爲什麼你的原沒有,但也許這會解決它。

+0

我很抱歉,那也沒有返回正確的值。 – crg821