2015-03-10 16 views
5

Sono nuovo nel codeigner, voglio contare tutte le righe dalla tabella del database ma la dose della query non recupera il totale esatto delle righe. Ecco Modellorighe di conteggio del codice php

public function countRow(){ 
$query = $this->db->query("SELECT *,count(id) AS num_of_time FROM home"); 
    // print_r($query->result()); 
    return $query->result(); 
} 

e questo è il controller

public function countTotalrow(){ 
    $data['query'] = $this->home_model->countRow(); 
} 

questa è la vista

foreach ($num_of_time as $row){ 
    <span><?php print_r($row->id);?></span> 
+1

se non ottiene l'esatto totale di righe, cosa vuol recuperare? –

+0

Penso che la variabile '$ num_of_time' nel terzo codice di esempio dovrebbe essere '$ query' –

+0

fornisce un numero errato 11, ma i record sono 14 nella tabella. – Nilab

risposta

12

È possibile utilizzare la funzione di supporto $query->num_rows()

Restituisce il numero di righe restituite dalla query. È possibile utilizzare in questo modo:

$query = $this->db->query('SELECT * FROM my_table'); 
echo $query->num_rows(); 
+1

Non vi è alcun motivo per eseguire una query completa quando il motore del database può solo restituire il numero totale di righe dalla memoria dei metadati. È una risorsa dispendiosa e non si adatta bene. Invece di interrogare l'intera tabella, usa '$ this-> db-> count_all_results()' – pbarney

0

Se davvero si vuole contare tutte le righe. È possibile utilizzare questa funzione del modello:

$this->db->select('count(*)'); 
$query = $this->db->get('home'); 
$cnt = $query->row_array(); 
return $cnt['count(*)']; 

Si restituisce il valore unico, cioè conteggio delle righe

1

sostituire la query all'interno della vostra funzione di modello con questa

$query = $this->db->query("SELECT id FROM home"); 

in vista:

echo $query->num_rows(); 
+0

dà questo errore è stato riscontrato l'errore Un PHP Severity: Avviso messaggio: Invalid argument in dotazione per foreach() – Nilab

+0

@nilab non comprende gli foreach, solo l'eco –

+0

non funziona lo dimostra il numero sbagliato @Kelvin Barsana ho bisogno del totale le voci del mio tavolo che sono 14 mi danno 21 dopo aver rimosso foreach. – Nilab

7

di questo codice:

$this->db->where(['id'=>2])->from("table name")->count_all_results();

o

$this->db->from("table name")->count_all_results();

0

si può provare questo uno

$this->db->where('field1',$filed1); 
    $this->db->where('filed2',$filed2); 
    $result = $this->db->get('table_name')->num_rows(); 
+0

@darkheir Grazie bro –

1

Per contare tutte le righe di una tabella:

echo $this->db->count_all_results('table_name'); 

contare righe selezionate dalla tabella:

echo $this->db->where('name', $name)->count_all_results('table_name'); 
0

Try This :) ho creato il mio sul modello di contare tutti i risultati

in library_model

function count_all_results($column_name = array(),$where=array(), $table_name = array()) 
{ 
     $this->db->select($column_name); 
     // If Where is not NULL 
     if(!empty($where) && count($where) > 0) 
     { 
      $this->db->where($where); 
     } 
     // Return Count Column 
     return $this->db->count_all_results($table_name[0]);//table_name array sub 0 
} 

Il controller sarà simile a questa

public function my_method() 
{ 
    $data = array(
    $countall = $this->model->your_method_model() 
); 
    $this->load->view('page',$data); 
} 

Poi semplice chiamare il modello Biblioteca nel modello

function your_method_model() 
{ 
     return $this->library_model->count_all_results(
       ['id'], 
       ['where], 
       ['table name'] 
      ); 
} 
Problemi correlati