Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Guardar el resultado de un COUNT de MySQL en una variable PHP

Estas en el tema de Guardar el resultado de un COUNT de MySQL en una variable PHP en el foro de PHP en Foros del Web. Hola a todos, Como comprobarán, estoy empezando con esto del PHP, y aunque leo manuales, hay dudas que no termino de resolver por mí mismo. ...
  #1 (permalink)  
Antiguo 09/11/2015, 02:52
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Pregunta Guardar el resultado de un COUNT de MySQL en una variable PHP

Hola a todos,
Como comprobarán, estoy empezando con esto del PHP, y aunque leo manuales, hay dudas que no termino de resolver por mí mismo. Estoy intentando guardar el resultado de una consulta SQL, exactamente un COUNT en una variable, pero parece que no doy con la tecla.

Mi código:

Código PHP:
$con=conect();
$contadormysqli_query($con"SELECT COUNT(*) FROM contenido");
echo 
$contador
Como puedo resolverlo?
Muchas gracias de antemano.
Isaac.
  #2 (permalink)  
Antiguo 09/11/2015, 03:20
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 8 meses
Puntos: 3
Respuesta: Guardar el resultado de un COUNT de MySQL en una variable PHP

$con=conect();
$query= mysqli_query($con, "SELECT COUNT(*) FROM contenido");
$contador = mysqli_num_rows($query);
echo $contador;
  #3 (permalink)  
Antiguo 09/11/2015, 03:55
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: Guardar el resultado de un COUNT de MySQL en una variable PHP

http://www.forosdelweb.com/f18/mostr...tabla-1141366/

en este tema lo hago yo, uso un bucle para hacerlo varias veces guardando su resultado en un array e imprimiendo lugo el contenido de dicho array, por si te sirve de ayuda

saludos
  #4 (permalink)  
Antiguo 09/11/2015, 04:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Guardar el resultado de un COUNT de MySQL en una variable PHP

Cita:
Iniciado por isaacbnc Ver Mensaje
Hola a todos,
Como comprobarán, estoy empezando con esto del PHP, y aunque leo manuales, hay dudas que no termino de resolver por mí mismo. Estoy intentando guardar el resultado de una consulta SQL, exactamente un COUNT en una variable, pero parece que no doy con la tecla.

Mi código:

Código PHP:
$con=conect();
$contadormysqli_query($con"SELECT COUNT(*) FROM contenido");
echo 
$contador
Como puedo resolverlo?
Muchas gracias de antemano.
Isaac.
$contador es el result de la query,no el dato contenido. Lee el manual de referencia,por favor.
En todos los casos lo que PHP recibe es un array asociativo al que puedes acceder,y la clave de indice en este caso es una columna llamada "COUNT(*)". Te recomiendo ponerles alias a las columnas cuando us se funciones. Hace las cosas más fáciles.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/11/2015, 05:05
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Guardar el resultado de un COUNT de MySQL en una variable PHP

Si vas a contar toso los registros seria solo asi:

Código PHP:
Ver original
  1. $cuenta = $db->query("select * from contenido");
  2. $total = mysqli_num_rows($cuenta);
  3. echo "la cantidad de registros es: ".$total;

ahora si vas a contar un campo en especifico, seria algo asi
Código PHP:
Ver original
  1. $cuenta = $db->query("select count(campo) as cantidad,campo from contenido where campo = 'loquesea'");
  2. $row = $cuenta->fetch_assoc();
  3.  
  4. echo "el número de registros es: ".$row['cantidad'];
espero te sirva
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 09/11/2015, 06:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Guardar el resultado de un COUNT de MySQL en una variable PHP

El primer ejemplo, es inocuo si la cantidad de datos de la tabla leía es pequeño, y la longitud de sus registros corta. De lo contrario es impráctico, porque estás recibiendo un set de datos compelto, cuando en realidad no te interesan. Se supone que lo que quieres es averiguar la cantidad de registros, no su contenido.
El segundo ejemplo es correcto. Mandas a contar a la base y esta de vuelve el valor total.

Como nota, en manejo y adminsitracion de acceso a datos se desaconseja enfáticamente acceder a los datos usando "SELECT *...", porque con ello estás leyendo TODOS los datos de TODAS las columnas, cuando en muy rara ocasiones la aplicación los necesita completos.
Pedir todos los datos consume recursos del buffer de datos, del de consultas, tiempo de acceso de disco en el servidor, bloques de memoria innecesarios, recursos de red (transmisión de datos innecesarios masivamente), dando como resultado un funcionamiento de baja performance, que empeora a medida que las tablas crecen en cantidad de registros.

Es muy usual entre los programadores, sin pretender ofender porque yo también programo, hacer eso por que es más facil que indicar campos específicos. Pero es una mala práctica, y en este caso puntual, es innecesario.

Prefiero la segunda solución que aporta @xfxstudios. Es limpia, breve y clara, además de eficiente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 09/11/2015, 16:38
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Guardar el resultado de un COUNT de MySQL en una variable PHP

Hola y muchas gracias a todos, en especial a @xfxstudios y @gnzsoloyo.
He conseguido que funcione con el siguiente código:

Código PHP:
Ver original
  1. $cuenta = mysqli_query($con, "SELECT * FROM contenido");
  2. $total = mysqli_num_rows($cuenta);
  3. echo "la cantidad de registros es: ".$total;

He cambiado la parte "$db->query" ya que no me funcionaba y tampoco la entendía.
Ahora la questión es que es muy ineficiente, habría alguna forma de contar todos los registros, sin necesidad de poner ninguna restricción, y que fuera más eficiente.
El segundo código no lo entiendo muy bien, la verdad.
Aunque el código que tengo, ya hace lo que quiero, me gustaría que fuera algo más eficiente si puede ser.
Muchas gracias!!
  #8 (permalink)  
Antiguo 09/11/2015, 19:24
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Guardar el resultado de un COUNT de MySQL en una variable PHP

$db es la variable del archivo de conexion, algo asi:
Código PHP:
Ver original
  1. $usuario = "USUARIO";
  2. $pass = "PASS";
  3. $host = "HOST";
  4. $base = "BASE";
  5.  
  6. $db = new MySQLi($host, $usuario, $pass, $base);
  7. if($db->connect_error) {
  8.     die('Error de conexion ('.$db->connect_errno.')'
  9.         .$db->connect_errno);
  10. }

ahora no entiendo a que te refieres con mas eficiente, la consulta va a ser lo mas eficiente o no dependiendo de la finalidad de esta y de que esperas obtener, si solo queres saber cuantos registros hay, pues creo que asi esta bien, ahora si quieres segmentar los registros, ya seria filtrar, que es lo que te explico en la segunda consulta del codigo anterior que te coloque
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 10/11/2015, 03:31
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Guardar el resultado de un COUNT de MySQL en una variable PHP

Vale, ya me ha quedado claro!
Muchas gracias.

Lo que mer refería con "más eficiente" es que, con la solución que tenía, hacía un select * from contenido; y eso supone mucha carga si la tabla es muy grande. Mi intención era hacer únicamente un Count *, pero finalmente se me ha ocurrido una manera que está bastante bien creo yo, en vez de select *, pongo select ID. Así, solo accede a esa parte.


Código PHP:
Ver original
  1. $con=conect();
  2. $cuenta = mysqli_query($con, "SELECT ID FROM contenido");
  3. $total = mysqli_num_rows($cuenta);

Lo dicho, muchas gracias!!
  #10 (permalink)  
Antiguo 10/11/2015, 04:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Guardar el resultado de un COUNT de MySQL en una variable PHP

Te sigue devolviendo el set completo de ID.
Si lo que quieres es la cantidad de registros, ¿para qué leerlos? Con sólo buscar el COUNT () alcanza.
¿Cual es el problema que tienes con eso?

Basicamente es esto, si tomo tu propio script del inicio del hilo

Código PHP:
Ver original
  1. $con=conect();
  2. $result= mysqli_query($con, "SELECT COUNT(*) total FROM contenido");
  3.  
  4. $total = mysqli_fetch_row($result);
  5. echo "La cantidad de registros es: ".$total[0];

Con eso MySQL se encarga de contar, y tu solamente muestras el resultado...
¿No te parece más simple?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/11/2015 a las 06:19

Etiquetas: count, mysql, resultado, select, sql, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:16.