5

Sto usando la seguente query nel controller di codeigniter.come contare il numero di righe restituite dalla query in Codeigniter con Datamapper

$u -> where('us_email_id', $username); 
    $u -> where('us_password', $password1); 
    $details = $u -> get(); 
    $total = count($details); 
    echo $total; echo "<br>"; 
    echo count($details); 

Nel codice di cui sopra "$ u" è il nome di oggetto per la classe "Utente" per la DataMapper "Utente" in cui il nome della tabella nel mio database è "utenti". Voglio vedere quante righe vengono restituite dopo l'esecuzione della query. "$ total" visualizza sempre 1 anche se ID utente e password non corrispondono. Quello che voglio è, se il numero di righe restituite 1 quindi "ok" altro "qualcosa di sbagliato". So che è basilare, ma se qualcuno lo sa, per favore aiutatemi. Grazie in anticipo.

risposta

6

Se si desidera solo per contare le righe totali trovate, chiamare il metodo count() anziché get().

$u->where('us_email_id', $username); 
$u->where('us_password', $password1); 
$total = $u->count(); 

Ma, se hai bisogno anche i dati, allora si può semplicemente chiamare get(), e dopo che l'uso di PHP count() per contare quanti elementi ci sono all'interno della all proprietà dell'oggetto.

$u->where('us_email_id', $username); 
$u->where('us_password', $password1); 
$u->get(); 
$total = count($u->all); 

È possibile controllare la documentazione per ulteriori dettagli.

+0

perfetto ... molti molti (infinite volte) grazie a te ... :) –

+0

Un modo più sicuro per contare i risultati dopo l'esecuzione della query è usare $ u-> result_count(). Questo conta i risultati da $ this -> _ dm_dataset_iterator se il suo set, altrimenti usa count ($ this-> all). –

8

segue è disponibil in CI - checkout questa pagina - http://codeigniter.com/user_guide/database/results.html

$query->num_rows() 

Il numero di righe restituite dalla query. Nota: In questo esempio, $ query è la variabile che l'oggetto risultato della query viene assegnato a:

$query = $this->db->query('SELECT * FROM my_table'); 

echo $query->num_rows(); 

in modo che nel tuo esempio sopra è necessario provare

$details->num_rows(); 
+0

non funziona in codeigner quando usiamo Datamapper per DB Query ... Ma se lo siamo lavorando con record attivo di codeigniter, allora va bene. Comunque è davvero fantastico e sono grato che tu abbia preso una pausa per aiutarmi. ciò che Kemal Fadillah ha suggerito sta funzionando perfettamente. ma il tempo è molto prezioso che hai investito per aiutarmi. molte grazie a te per questo :) –

+1

Nessun problema - Shashi - So che chiami chiaramente il datamapper ma non mi è venuto in mente e pubblica quanto sopra per activerecord. Comunque ... – TigerTiger

1

Se la password è stata cifrata e riprovare

o se tutta la parte dei dati va bene l'tenta di utilizzare il seguente codice

$this->db->where(array('us_email_id' => $username,'us_password' => $password1)); 
echo $this->db->count_all_results('users'); 
Problemi correlati