PHP - rows me da 1 y no hay nada

 
Vista:
sin imagen de perfil

rows me da 1 y no hay nada

Publicado por anonymous (10 intervenciones) el 14/05/2017 17:42:33
Tengo una tabla cita que está vacía ahora mismo y con este código me sale que tiene una cita, pero en la tabla no hay nada la acabo de crear, y no se porque.


1
2
3
4
5
6
7
8
9
//Cuantas citas hay hoy
$consulta="SELECT count(*) FROM cita WHERE fecha='$fechaHoy'";
 
/* Se ejecuta la consulta */
$hacerConsulta=mysqli_query($canal, $consulta);
 
/* Se determina el número de citas */
$numeroDeCitasDelDia=mysqli_num_rows($hacerConsulta);
echo ("Número de citas hoy: ".$numeroDeCitasDelDia);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

rows me da 1 y no hay nada

Publicado por kip (877 intervenciones) el 14/05/2017 23:21:54
Hola, debes tener en cuenta que la funcion COUNT() de MySQL retorna un entero que puede ser 0 cuando la sentencia no retorna ninguna fila o la cantidad de filas retornadas por esta misma sentencia.

En tu caso COUNT() retorna un 0 ya que no existen filas retornadas por la sentencia SELECT y cuando haces uso de mysqli_num_rows esta te retorna el numero de filas del conjunto de resultados devuelto por la ejecución de la ultima query, no hay ningun error en ello ya que tu query al ejecutarse retornara un resultado parecido a este:

1
2
3
4
5
6
+----------+
| COUNT(*) |
+----------+
|        0 |
+----------+
1 row in set

Si te fijas, COUNT() funciono tal como deberia, retorno un 0 ya que no existen filas en tu tabla, este conjunto de resultados es evaluado por mysqli_num_rows y como se observa, la query al ejecutarse retorno una fila que es el valor de COUNT(), es por eso que mysqli_num_rows te retorna 1 ya que existe una fila en el conjunto de resultados.

Ahora bien si quieres verificar que existan datos en la tabla, la opcion de usar COUNT() es correcta pero no deberias implementar mysqli_num_rows, si no mas bien accedes al conjunto de resultados y tomar el valor de COUNT(*) al cual le podriamos agregar un alias para acceder de forma mas clara, seria algo asi:

1
2
$consulta="SELECT COUNT(*) AS citas FROM cita WHERE fecha='$fechaHoy'";
$conjuntoResultados=mysqli_query($canal, $consulta);

Luego accedemos al conjunto de resultados retornados por la query usando mysqli_fetch_assoc :

1
2
3
4
$fila = mysqli_fetch_assoc($conjuntoResultados);
if ($fila['citas'] < 1) {
    echo "NO EXISTEN CITAS !";
}

De esa forma deberia funcionarte, pruebalo y nos cuentas.

Por cierto mysqli_num_rows simplemente retorna el numero de filas del conjunto de resultados retornado por la ejecución de la query, no evalua ningun dato dentro de este.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar