Foros del Web » Programando para Internet » PHP »

Problema con consulta sencilla

Estas en el tema de Problema con consulta sencilla en el foro de PHP en Foros del Web. Buenos días. Estoy haciendo una consulta bien sencilla en MySQL. Sin embargo, parece que se me pasa algo porque no acaba de funcionar correctamente. Lo ...
  #1 (permalink)  
Antiguo 12/12/2012, 03:58
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Problema con consulta sencilla

Buenos días.

Estoy haciendo una consulta bien sencilla en MySQL. Sin embargo, parece que se me pasa algo porque no acaba de funcionar correctamente.

Lo que quiero consultar es el valor de un atributo de un usuario de mi base de datos.

Empiezo así:

Código PHP:
$sql "SELECT * FROM usuarios WHERE id_usuario="$_SESSION["usu_id"] ."";
$q_usuario mysql_query($sql); 
Después, compruebo si el usuario tiene, por ejemplo, un numero de telefono introducido:

Código PHP:
if ($q_a["telefono"]==""){ Muestra un mensaje 
El problema es que tanto si el usuario tiene telefono introducido como si no, siempre muestra el mensaje.

Decir que la consulta solo devuelve una fila puesto que el ID es único para cada usuario.

¿Qué es lo que se me ha pasado por alto?
  #2 (permalink)  
Antiguo 12/12/2012, 04:06
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Problema con consulta sencilla

Esta pregunta debe ir en PHP, no en MySQL, pero creo que los tiros pueden ir porque tu estás guardando el resultado en $q_usuario y luego compruebas la variable $q_a
  #3 (permalink)  
Antiguo 12/12/2012, 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: Problema con consulta sencilla

Movido desde MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 12/12/2012, 04:32
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Problema con consulta sencilla

Cita:
Iniciado por Heimish2000 Ver Mensaje
Esta pregunta debe ir en PHP, no en MySQL, pero creo que los tiros pueden ir porque tu estás guardando el resultado en $q_usuario y luego compruebas la variable $q_a
Eso ha sido error mio al escribir el tema en el foro

Lo tengo así:

Código PHP:
if ($q_usuario["telefono"]==""){ Muestra un mensaje 
  #5 (permalink)  
Antiguo 12/12/2012, 08:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con consulta sencilla

Muéstranos dondes asignas $q_usuario
También, imprime ese array en pantalla y revisa cuál es su estructura.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 13/12/2012, 02:24
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Problema con consulta sencilla

Cita:
Iniciado por David Ver Mensaje
Muéstranos dondes asignas $q_usuario
También, imprime ese array en pantalla y revisa cuál es su estructura.
Código PHP:
$sql "SELECT * FROM usuarios WHERE id_usuario="$_SESSION["usu_id"] .""
$q_usuario mysql_query($sql);  

if (
$q_usuario["telefono"]==""){ Muestra un mensaje 
La tabla usuarios es una tabla donde están las típicas columnas (id, nombre, apellido, telefono, mail...) y la id de cada usuario es unica.

Lo que no entiendo por que siempre devuelve TRUE la comparación que hago. Por eso estoy seguro que algún paso me habré saltado en al consulta.
  #7 (permalink)  
Antiguo 13/12/2012, 04:31
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: Problema con consulta sencilla

Por las dudas, deberías probar:
Código PHP:
Ver original
  1. $sql = "SELECT * FROM usuarios WHERE id_usuario=". $_SESSION["usu_id"] ."";
  2. $q_usuario = mysql_query($sql);  
  3. $fila = mysql_fetch_assoc($q_usuario);
  4. if ($fila["telefono"]=="")
  5.     {
  6.     echo "Sin teléfono";
  7.     exit;
  8.     }
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 13/12/2012, 05:20
Avatar de dany0425  
Fecha de Ingreso: julio-2012
Ubicación: Colombia
Mensajes: 16
Antigüedad: 11 años, 8 meses
Puntos: 3
Respuesta: Problema con consulta sencilla

tu problema esta en la clausula where debe ir con ' los valores string tu consulta quedaria asi:

$sql = "SELECT * FROM usuarios WHERE id_usuario='". $_SESSION["usu_id"] ."'";
$q_usuario = mysql_query($sql);

Espero que te funcione ;)
  #9 (permalink)  
Antiguo 13/12/2012, 06:12
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: Problema con consulta sencilla

Los valores de parámetros sólo van entre apóstrofes si y solo si son cadenas de texto, o fechas expresadas co o cadenas de texto, y JAMÁS se ponen así numeros, booleanos o nulos. Nunca.
En este caso se infiere que es un numeros, por lo que van sin apóstrofe. Lo que yo estimo es que el error es que evalúa el result y no el array relacionado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 14/12/2012, 04:50
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Problema con consulta sencilla

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Por las dudas, deberías probar:
Código PHP:
Ver original
  1. $sql = "SELECT * FROM usuarios WHERE id_usuario=". $_SESSION["usu_id"] ."";
  2. $q_usuario = mysql_query($sql);  
  3. $fila = mysql_fetch_assoc($q_usuario);
  4. if ($fila["telefono"]=="")
  5.     {
  6.     echo "Sin teléfono";
  7.     exit;
  8.     }
He probado esta solución pero me da un error en la linea:

Código PHP:
$fila mysql_fetch_assoc($q_usuario); 
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in x.php on line 285
  #11 (permalink)  
Antiguo 14/12/2012, 04:54
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Problema con consulta sencilla

Cita:
Iniciado por dany0425 Ver Mensaje
tu problema esta en la clausula where debe ir con ' los valores string tu consulta quedaria asi:

$sql = "SELECT * FROM usuarios WHERE id_usuario='". $_SESSION["usu_id"] ."'";
$q_usuario = mysql_query($sql);

Espero que te funcione ;)
Lo he probado así y nada, tampoco

Es mas, es probado también lo siguiente:

Código PHP:
if ($fila["telefono".value]==""
Y nada, no funciona. Y eso que estoy comprobando que el usuario con el que hago las pruebas tiene puesto un teléfono.
  #12 (permalink)  
Antiguo 14/12/2012, 06:35
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: Problema con consulta sencilla

Cita:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in x.php on line 285
¿Y estás seguro de que el usuario que pones existe?
Ese sería el resultado si el result de la consulta contuviese un error, o el resultado de la consulta fuese nulo.
¿Probaste la consulta sola en el phpMyadmin, con ese numero de ID?

Verifiquemos:
Código PHP:
Ver original
  1. $sql = "SELECT * FROM usuarios WHERE id_usuario=". $_SESSION["usu_id"] ;
  2. $q_usuario = mysql_query($sql);  
  3.  
  4. if($q_usuario)
  5.     {
  6.     $fila = mysql_fetch_assoc($q_usuario);
  7.     if ($fila["telefono"]=="")
  8.         {
  9.         echo "Sin teléfono";
  10.         exit;
  11.         }
  12.     }
  13. else
  14.     {
  15. if (mysql_errno())
  16.     {echo "Error en MySQL: ".mysql_error();}
  17. else
  18.     {echo "No existe el usuario";}
  19.     exit;
  20.     }
__________________
¿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; 14/12/2012 a las 06:42
  #13 (permalink)  
Antiguo 14/12/2012, 06:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con consulta sencilla

Yo sospecho que $_SESSION['usu_id'] no devuelve ningún valor. Pruébalo con isset()
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 17/12/2012, 03:35
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Problema con consulta sencilla

Cita:
Iniciado por David Ver Mensaje
Yo sospecho que $_SESSION['usu_id'] no devuelve ningún valor. Pruébalo con isset()
He probado lo siguiente:

Código PHP:
$sql "SELECT * FROM usuarios WHERE id_usuario="$_SESSION["usu_id"] ; 
$q_usuario mysql_query($sql);  
 
if(isset(
$q_usuario)){
   echo 
"Funciona";

Y el mensaje "Funciona" aparece en la web.
También he probado a hacer la consulta en el PHPMyAdmin y funciona correctamente.

Ya casi que no se me ocurre que probar
  #15 (permalink)  
Antiguo 17/12/2012, 03:47
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Problema con consulta sencilla

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Y estás seguro de que el usuario que pones existe?
Ese sería el resultado si el result de la consulta contuviese un error, o el resultado de la consulta fuese nulo.
¿Probaste la consulta sola en el phpMyadmin, con ese numero de ID?

Verifiquemos:
Código PHP:
Ver original
  1. $sql = "SELECT * FROM usuarios WHERE id_usuario=". $_SESSION["usu_id"] ;
  2. $q_usuario = mysql_query($sql);  
  3.  
  4. if($q_usuario)
  5.     {
  6.     $fila = mysql_fetch_assoc($q_usuario);
  7.     if ($fila["telefono"]=="")
  8.         {
  9.         echo "Sin teléfono";
  10.         exit;
  11.         }
  12.     }
  13. else
  14.     {
  15. if (mysql_errno())
  16.     {echo "Error en MySQL: ".mysql_error();}
  17. else
  18.     {echo "No existe el usuario";}
  19.     exit;
  20.     }
¡Por fín!

La linea clave ha sido la de

Código PHP:
 {echo "Error en MySQL: ".mysql_error();} 
Que me ha mostrado exactamente lo que pasaba. Al final, era una tontería (lo que yo suponía)

¡Muchas gracias a todos por vuestra ayuda!

Etiquetas: select, sencilla, sql
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 16:03.