elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  [MySQL] Como saber cuando no he recogido datos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [MySQL] Como saber cuando no he recogido datos  (Leído 11,872 veces)
‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
[MySQL] Como saber cuando no he recogido datos
« en: 29 Enero 2010, 19:48 pm »

Digamos que introduzco esta consulta:

Código
  1. SELECT * FROM asd WHERE cosa = 'rofl'

Entonces, esto me busca en la BD y mediante un bucle while podré acceder a todas las filas que concuerden con eso.

Pero quiero saber, cómo sé cuando no me recoge nada, osease, si no hubiera ninguna fila que concordase con el filtro que puse (WHERE cosa = 'rofl').

No se si me explico xD

Un saludo!


« Última modificación: 30 Enero 2010, 15:20 pm por ‭lipman » En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: [MySQL] Como saber cuando no he recogido datos
« Respuesta #1 en: 30 Enero 2010, 00:16 am »

Si es al nivel de un lenguaje de programacion como php, perl, python, java o C etc, etc... Aca existen funciones para manejar el retorno de un fetchrow.  Pero puestos que no especificas si quieres averiguar esto a nivel de un lenguaje de programacion o a nivel del motor de la DB como tal, asumire que quieres obtener esto dentro del motor MySQL y no a traves de un lenguaje de programacion.

Por ende, te expongo un ejemplo, yo tengo una simple tabla con los siguientes datos:

Código
  1. mysql> SELECT * FROM ejemplo;
  2. +--------+---------+
  3. | codigo | nombres |
  4. +--------+---------+
  5. |      1 | Juan    |
  6. |      2 | Maritza |
  7. |      3 | Pepe    |
  8. +--------+---------+
  9. 3 ROWS IN SET (0.00 sec)
  10.  
  11.  

Y quiero saber cuando existen valores y cuando no existen valores en dicha tabla, entonces me ayudo de un procedimiento almacenado:

Código
  1.  
  2. mysql> delimiter /
  3. mysql> CREATE PROCEDURE ejemplo1(IN numero INTEGER)
  4.    -> BEGIN                                      
  5.    -> SELECT COUNT(*) INTO @contador FROM ejemplo WHERE codigo = numero;
  6.    -> IF ( SELECT @contador = 0 ) THEN                                  
  7.    -> SELECT concat('El valor es cero');                                
  8.    -> ELSE                                                              
  9.    -> SELECT concat('El valor no es cero');
  10.    -> END IF;                              
  11.    -> END;                                
  12.    -> /                                    
  13. Query OK, 0 ROWS affected (0.00 sec)        
  14.  
  15.  

Ahora que mi procedimiento anterior esta hecho, procedo a llamarlo pasandole 1 valor que sera el valor con el cual igualara el WHERE cosa = algo

Código
  1.  
  2. mysql> CALL ejemplo1(1);
  3. +-------------------------------+
  4. | concat('El valor no es cero') |
  5. +-------------------------------+
  6. | El valor no es cero           |
  7. +-------------------------------+
  8. 1 ROW IN SET (0.00 sec)
  9.  
  10. Query OK, 0 ROWS affected (0.00 sec)
  11.  
  12. mysql> CALL ejemplo1(19);
  13. +----------------------------+
  14. | concat('El valor es cero') |
  15. +----------------------------+
  16. | El valor es cero           |
  17. +----------------------------+
  18. 1 ROW IN SET (0.00 sec)
  19.  
  20. Query OK, 0 ROWS affected (0.00 sec)
  21.  
  22.  

Espero que mas o menos se entienda la idea  :P  aunque si esto lo piensas realizar a traves de un lenguaje de programacion que trabaje con la DB, es preferible utilizar las funciones del modulo o API de MySQL en el lenguaje para validar si retorno o no registros una consulta.


En línea

‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: [MySQL] Como saber cuando no he recogido datos
« Respuesta #2 en: 30 Enero 2010, 15:26 pm »

Si, la idea era hacerlo através de PHP.

He estado dándole vueltas a lo que me pusiste ^^ pero no logro visualizar eso en mi cabeza para ponerlo en lenguaje PHP... no se me ocurre >.<

La "idea" que tenia, que no ha funcionado por cierto, era esta:

Código
  1. $consulta = "SELECT * FROM categorias WHERE algo = 'asd'";
  2. $resultado = mysql_query($consulta);
  3.  
  4. while ($fila = mysql_fetch_array($resultado))
  5. {
  6.  
  7.   if($fila == "") //No se me ocurre otra forma
  8.   echo "sdjahgasjg";        //de indicar que esta vacio
  9.  
  10. }
  11.  

Un saludo y gracias ^^
En línea

N4X

Desconectado Desconectado

Mensajes: 74



Ver Perfil WWW
Re: [MySQL] Como saber cuando no he recogido datos
« Respuesta #3 en: 30 Enero 2010, 16:29 pm »

en php se puede hacer así:

Código
  1. <?php
  2.  
  3. include_once("conect.php");
  4.  
  5. $query = mysql_query("select asd from censor",$con);
  6.  
  7. if ($query)
  8. echo "ok";
  9. else
  10. echo "mal";
  11. ?>
  12.  
  13.  
  14.  

en ese caso retorna mal porque la tabla no contiene asd:
Código
  1. mysql> SELECT * FROM censor;
  2. +----+---------+
  3. | id | palabra |
  4. +----+---------+
  5. |  1 | tontas  |
  6. |  2 | idiota  |
  7. |  3 | feo     |
  8. |  4 | burro   |
  9. +----+---------+
  10. 4 ROWS IN SET (0.00 sec)
  11.  
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: [MySQL] Como saber cuando no he recogido datos
« Respuesta #4 en: 30 Enero 2010, 17:39 pm »

AHhhh ahora si, si es el caso hacerlo en PHP obvia el procedimiento almacenado que coloque  ;)  eso va para el motor como tal.

En tu caso como te decia, en PHP existe una funcion para manejar los registros retornados. En tu caso querras averiguar algo sobre mysql_num_rows

Fuente:  http://php.net/manual/en/function.mysql-num-rows.php

Puedes igualar que si mysql_num_rows == 0 pos imprime tu el error algo como 'No hay registros con ese valor' tu entiendes  ;)

Un saludito  :-*
En línea

‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: [MySQL] Como saber cuando no he recogido datos
« Respuesta #5 en: 1 Febrero 2010, 00:42 am »

*Dandose cabezazos contra el escritorio*

Por dios, como no se me habia ocurrido X_X y eso que uso bastante lo de num_rows xD

Gracias por iluminarme Tifa ^^!!  ;D
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: [MySQL] Como saber cuando no he recogido datos
« Respuesta #6 en: 1 Febrero 2010, 03:07 am »

Suele pasar.....

De nada chico   ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como saber datos mas tecnicos de la pc
GNU/Linux
bash 4 4,897 Último mensaje 1 Julio 2011, 18:08 pm
por [u]nsigned
saber desde que año se guardan datos en la db mysql
PHP
Zeroql 1 2,481 Último mensaje 24 Octubre 2011, 15:15 pm
por [u]nsigned
¿Cómo evitar pasar a una siguiente opción cuando no hayan ingresado datos?
Programación C/C++
Juancho25 3 2,609 Último mensaje 2 Noviembre 2012, 10:29 am
por NeoB
Problemas al recoger de un ckeckbox el id recogido de la base de datos
PHP
luar79 2 1,926 Último mensaje 15 Febrero 2016, 16:54 pm
por sodark
Cómo saber qué aplicaciones consumen más datos en Windows 10
Noticias
wolfbcn 0 1,655 Último mensaje 30 Diciembre 2016, 14:33 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines