Foros del Web » Programando para Internet » PHP »

Consulta sobre mysql_num_rows

Estas en el tema de Consulta sobre mysql_num_rows en el foro de PHP en Foros del Web. hola amigos del foro, les hago una consulta, hasta ahora siempre he venido utilizando la funcion mysql_num_rows para contar las filas de una base de ...
  #1 (permalink)  
Antiguo 22/12/2012, 13:52
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Consulta sobre mysql_num_rows

hola amigos del foro, les hago una consulta,
hasta ahora siempre he venido utilizando la funcion mysql_num_rows para contar las filas de una base de datos
pero ahora resulta ke veo que dicha funcion esta en desuso para la nueva version de php, y si no entendi mal la reemplazaron por la funcion mysqli_stmt_num_rows
no se si estoy en lo correcto, pero de ser asi no logro etender como funciona dicha funcion
alguien podria ayudarme?
supongamos que tengo esta simple consulta a la base de datos:
$c= "select * from restaurant_info where cod_post= '".$cp."'";
$r= mysql_query($c) or die (mysql_error());

y quiero contar la cantidad de registros, antes lo hacia de la siguiente manera
$n= mysql_num_rows($r) or die (mysql_error());

pero ahora como deberia hacerlo??
desde ya mil gracias
saludos
ariel

Última edición por apustilnik; 22/12/2012 a las 14:48
  #2 (permalink)  
Antiguo 22/12/2012, 15:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta sobre mysql_num_rows

En primer lugar es pésima practica hacer un SELECT que extraiga todos los resultados solo para contar el total de los mismos.

¿No se te hace completamente absurdo?

La consulta de SQL estándar es lo ideal, usando COUNT(), así solo obtienes un resultado con el total lo cual es mucho mas óptimo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/12/2012, 16:07
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

antes que nada muchas gracias por la respuesta, y perdon por las molestias
pero como seria por ejemplo la consulta ideal? y como extraeria el numero de campos?
gracias
Cita:
Iniciado por pateketrueke Ver Mensaje
En primer lugar es pésima practica hacer un SELECT que extraiga todos los resultados solo para contar el total de los mismos.

¿No se te hace completamente absurdo?

La consulta de SQL estándar es lo ideal, usando COUNT(), así solo obtienes un resultado con el total lo cual es mucho mas óptimo.
  #4 (permalink)  
Antiguo 22/12/2012, 16:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta sobre mysql_num_rows

A ver, ¿número de campos o número de registros?

No es lo mismo, aclarate primero.

Cita:
SELECT COUNT(*) FROM tabla WHERE campo = 'valor'
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 22/12/2012, 16:26
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

buena aclaracion, te cuento lo que yo necesito hacer:

necesito hacer una consulta a la base de datos, en la cual si me coincide el codigo postal ingresado por el usuario con el codigo postal de registros ingresados en la base de datos, me imprima en la pagina los datos de los usuarios ingresados coincidentes, pero ese no es el problema, eso lo hago con mysql_fetch_array
te cuento, para lo unico que basicamente hasta ahora utilizaba mysql_num_rows, es para lo siguiente:
supongamos que $n= mysql_fetch_array($consulta) or die (mysql_error());
hacia un:
if ($n<=0)
entonces imprimia un mensaje de error o de resultados no encontrados, por ejemplo
pero ahora me encuentro con que usando mysql_num_rows, si no encuentra ningun resultado no me imprime ningun mensaje, me explico mas o menos?
entonces queria ver como poder seguir haciendo lo mismo, con la funcion que corresponda que reemplace a mysql_num_rows, ya que como estuve viendo por alli, esa funcion esta como en desuso en las nuevas versiones de php

espero no haber resultado confuso en mi consulta
y desde ya mil gracias
ariel
Cita:
Iniciado por pateketrueke Ver Mensaje
A ver, ¿número de campos o número de registros?

No es lo mismo, aclarate primero.
  #6 (permalink)  
Antiguo 22/12/2012, 16:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta sobre mysql_num_rows

No tenías porque volver a explicar, eso se entiende perfectamente.

Y es lo mismo, debes usar COUNT() para saber si existen resultados o no.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 22/12/2012, 16:30
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

me equivoque, seria $n= mysql_num_rows
  #8 (permalink)  
Antiguo 22/12/2012, 16:35
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

como deberia hacerlo? perdon por el atrevimiento
ya que nunca antes lo hice con count

mi consulta original seria:

$c= "select * from restaurant_info where cod_post= '".$cp."'";
$r= mysql_query($c) or die (mysql_error());
$n= mysql_num_rows($r) or die (mysql_error());

como debria hacer lo mismo, usando count?
  #9 (permalink)  
Antiguo 22/12/2012, 16:36
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

como deberia hacerlo? perdon por el atrevimiento
ya que nunca antes lo hice con count

mi consulta original seria:

$c= "select * from restaurant_info where cod_post= '".$cp."'";
$r= mysql_query($c) or die (mysql_error());
$n= mysql_num_rows($r) or die (mysql_error());

como debria hacer lo mismo, usando count?
Cita:
Iniciado por pateketrueke Ver Mensaje
No tenías porque volver a explicar, eso se entiende perfectamente.

Y es lo mismo, debes usar COUNT() para saber si existen resultados o no.
  #10 (permalink)  
Antiguo 22/12/2012, 16:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta sobre mysql_num_rows

El formato genérico de una consulta es así.
Cita:
SELECT COUNT(*) FROM tabla WHERE campo = 'valor'
La consulta es normal, sólo debes extraer el resultado y ya.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 22/12/2012, 17:07
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

o sea que si utilizo count en la consulta sql, en caso de que el numero de campos encontrasdos sea 0, utilizando mysql_num_rows, me deberia mostrar el mensaje de que no se ha encontrado ningun campo coincidente?

Cita:
Iniciado por pateketrueke Ver Mensaje
El formato genérico de una consulta es así.


La consulta es normal, sólo debes extraer el resultado y ya.
  #12 (permalink)  
Antiguo 22/12/2012, 18:13
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

probe de la siguiente forma:

suponiendo que $cp= 1412
vale aclarar que en la base de datos hay un usuario cuyo cp es= 1417, entonces
realizo la busqueda de la siguiente manera:

$c= "select *, count(*) from restaurant_info where cod_post= '".$cp."'";
$r= mysql_query($c) or die (mysql_error());
$n= mysql_num_rows($r) or die (mysql_error());

pero si hago por ejemplo un echo en $n siempre me tira valor 1, aunque no haya coincidencias, y en ese caso deberia dar valor 0

y no se porque no funciona

Cita:
Iniciado por pateketrueke Ver Mensaje
El formato genérico de una consulta es así.


La consulta es normal, sólo debes extraer el resultado y ya.
  #13 (permalink)  
Antiguo 22/12/2012, 18:21
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 11 meses
Puntos: 12
Respuesta: Consulta sobre mysql_num_rows

Estimado

COUNT() realiaza un conteo de las filas que coinciden con la consulta.

http://dev.mysql.com/doc/refman/5.0/...ting-rows.html

por lo cual como resultado tendra un 0 o un N (numero total de campos que encontro la query)

puedes utilizar mysql_num_rows o bien hacer mysql_fecth_array.

por lo cual si no me equivoco te sirve esto:
Código PHP:
Ver original
  1. $count = mysql_num_rows(mysql_query("SELECT COUNT(*) FROM tabla"));
  2. if($count > 0)
  3. {
  4.  //found!
  5. }

o
Código PHP:
Ver original
  1. $count = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS total FROM tabla"));
  2. if($count['total'] > 0)
  3. {
  4.   //found
  5. }

si no mal recuerdo deberian estar bien los ejemplos.

y creo que usar mysql_fecth_array es mas rapido que mysql_num_rows.

Lo otro te recomiendo que veas MySQLi

http://php.net/manual/es/book.mysqli.php


Saludos.
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #14 (permalink)  
Antiguo 22/12/2012, 18:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta sobre mysql_num_rows

Una consulta con COUNT() siempre devolverá un resultado, la idea es extraer dicho valor, que es el que sirve.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 22/12/2012, 18:59
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

hola, antes que nada muchas gracias por la respuesta, te resumo mi idea
lo que yo necesito, y para lo cual hasta ahora utilizaba, y me funcionaba bien mysql_num_rows era simplemente para contar el numero de registros encontrados, entonces si dicho numero era 0 (o sea que la busqueda no habia arrojado resultados) entonces hacia lo siguiente:

suponiendo que $n= mysql_num_rows($consulta)
entonces

if ($n<=0)
echo "su busqueda no dio resultados";

pero ahora eso ya no funciona, de modo que si la busqueda no arroja resultados, no le muestra al usuario dicho mensaje, que es lo que a mi me interesa,
entonces mi consulta es justamente esa, como puedo hacer para ke siga funcionando correctamente?

(supongo que ya no funciona porque han cambiado los standards o algo por el estilo, ni idea)


Cita:
Iniciado por xalupeao Ver Mensaje
Estimado

COUNT() realiaza un conteo de las filas que coinciden con la consulta.

http://dev.mysql.com/doc/refman/5.0/...ting-rows.html

por lo cual como resultado tendra un 0 o un N (numero total de campos que encontro la query)

puedes utilizar mysql_num_rows o bien hacer mysql_fecth_array.

por lo cual si no me equivoco te sirve esto:
Código PHP:
Ver original
  1. $count = mysql_num_rows(mysql_query("SELECT COUNT(*) FROM tabla"));
  2. if($count > 0)
  3. {
  4.  //found!
  5. }

o
Código PHP:
Ver original
  1. $count = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS total FROM tabla"));
  2. if($count['total'] > 0)
  3. {
  4.   //found
  5. }

si no mal recuerdo deberian estar bien los ejemplos.

y creo que usar mysql_fecth_array es mas rapido que mysql_num_rows.

Lo otro te recomiendo que veas MySQLi

http://php.net/manual/es/book.mysqli.php


Saludos.
  #16 (permalink)  
Antiguo 22/12/2012, 20:37
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 11 meses
Puntos: 12
Respuesta: Consulta sobre mysql_num_rows

dejanos exactamente tu codigo. Ahora si quieres tu aplicacion perdure en tiempo lo mejor es que te pases a MySQLi o PDO.

Saludos.
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #17 (permalink)  
Antiguo 22/12/2012, 21:37
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

el ejemplo de consulta es el que te comentaba anteriormente, por ejemplo:
$cp= "1417";

$c= "select * from restaurant_info where cod_post= '".$cp."'":
$r= mysql_query($c) or die (mysql_error());
$n= mysql_num_rows($r) or die (mysql_error());

if ($n<=0)
echo "no se encontraron resultados

con respecto a pasarme a MySQLi o PDO, como deberia hacer eso? te consulto porque recien ahora estoy viendo que aparecen dichas variables, se conoce que estan cambiando los standards de PHP

Cita:
Iniciado por xalupeao Ver Mensaje
dejanos exactamente tu codigo. Ahora si quieres tu aplicacion perdure en tiempo lo mejor es que te pases a MySQLi o PDO.

Saludos.
  #18 (permalink)  
Antiguo 26/12/2012, 19:38
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta sobre mysql_num_rows

ya pude resolver el asunto por mis propios medios, investigando el funcionamiento de cada funcion, pude finalmente saber como readaptar mi codigo para tenerlo actualizado y funcionando

Etiquetas: mysql
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 06:27.