5

Estoy usando la siguiente consulta en el controlador de codeigniter.cómo contar el número de filas devueltas por la consulta en 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); 

En el código anterior "$ u" es el nombre del objeto de la clase "Usuario" para el DataMapper "Usuario" donde el nombre de la tabla en mi base de datos es "usuarios". Quiero ver cuántas filas se devuelven después de ejecutar la consulta. "$ total" siempre muestra 1 incluso si ID de usuario y contraseña no coinciden. Lo que quiero es que, si el número de filas es 1, entonces "ok", sino "algo mal". Sé que es básico, pero si alguien lo sabe, ayúdenme. Gracias por adelantado.

Respuesta

6

Si lo que desea es contar el total de filas encontradas, llame al método count() en lugar de get().

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

Pero, si también necesita los datos, a continuación, sólo tiene que llamar get(), y después de que el uso de PHP count() para contar cuántos elementos hay dentro de la propiedad del objeto all.

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

Puede consultar la documentación para obtener más información.

+0

perfecto ... muchas muchas muchas (infinitas veces) gracias a ti ... :) –

+0

Una forma más segura de contar los resultados después de que se haya ejecutado la consulta es usar $ u-> result_count(). Esto cuenta los resultados de $ this -> _ dm_dataset_iterator si está configurado, sino que usa count ($ this-> all) en su lugar. –

8

siguiente es Availab en CI - Finalizar Compra esta página - http://codeigniter.com/user_guide/database/results.html

$query->num_rows() 

El número de filas devueltas por la consulta. Nota: En este ejemplo, $ consulta es la variable que el objeto resultado de la consulta se asigna a:

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

echo $query->num_rows(); 

para que en el ejemplo anterior hay que probar

$details->num_rows(); 
+0

no funciona en codeigniter cuando usamos Datamapper para DB Query ... Pero si somos trabajando con el registro activo de codeigniter, entonces esto está bien. De todos modos es realmente increíble y estoy agradecido de que hayas tomado un tiempo para ayudarme. lo que Kemal Fadillah ha sugerido está funcionando perfectamente. pero el tiempo es muy valioso y lo invirtió para ayudarme. muchas muchas gracias por eso :) –

+1

No hay problema - Shashi - Sé que mencionas claramente el mapeador de datos pero simplemente no se me ocurrió y publicaste lo anterior para activerecord. De todos modos sucede ... – TigerTiger

1

Si la contraseña se encripta y vuelve a intentarlo

o si toda la parte de datos está bien el tratar de utilizar el siguiente código

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