Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta a dos tablas con PDO

Estas en el tema de Consulta a dos tablas con PDO en el foro de PHP en Foros del Web. ------------------------------- Hola, hace poco que descubrí PDO y tengo un problema al intentar hacer una consulta a dos tablas, ya que no puedo acceder a ...
  #1 (permalink)  
Antiguo 12/10/2013, 13:48
Avatar de panabuntu  
Fecha de Ingreso: octubre-2013
Mensajes: 19
Antigüedad: 10 años, 6 meses
Puntos: 0
Consulta a dos tablas con PDO

-------------------------------

Hola, hace poco que descubrí PDO y tengo un problema al intentar hacer una consulta a dos tablas, ya que no puedo acceder a los campos del resultado que se obtiene de la consulta. os escribo mi consulta:

Código PHP:

$conexion 
$this->conectaBBDD();
            
            
//$datosUsuario;
            
            
$consulta "SELECT id_usuario, nombre_usuario, pass_usuario, nombre_tipo_usuario FROM usuario, tipo_usuario
                WHERE tipo_usuario_id_tipo_usuario = id_tipo_usuario
                AND nombre_usuario = :usuario
                AND pass_usuario = :pass;"
;
            
            
$result $conexion->prepare($consulta);
            
            
$result -> bindParam ':usuario' $usuario ); 
            
$result -> bindParam(':pass'$pass);
            
            
$result->execute();
            
            if(!
$result){
                
$conexion NULL;
                return 
FALSE;
            }
            elseif (
$result->fetchColumn() == 0) {
                
$conexion NULL;
                return 
FALSE;
            }
            else {
                
$datosUsuario $result->fetch();
                
                
$conexion NULL;
                return 
$datosUsuario['nombre_usuario'];
            }
        } 
La consulta esta bien realizada ya que la he comprobado, el problema es que cualquier valor de $datosUsuario devuelve false. Sinceramente no lo entiendo.

Si omito la sentencia donde uno las dos tablas "tipo_usuario_id_tipo_usuario = id_tipo_usuario" si que funciona.

Un saludo y graciassssss.....
  #2 (permalink)  
Antiguo 12/10/2013, 13:59
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta a dos tablas con PDO

prueba hacer un vardump antes de retornar haber que te devuelve

$datosUsuario = $result->fetch();

var_dump($datosUsuario);

$conexion = NULL;
return $datosUsuario['nombre_usuario'];

De todas maneras inetnta explicar un poco que quieres conseguir o que relacion , para darte alguna solucion , creo entender que intentas extraer el tipo de usuario segun el pass y el user para despues buscarlo al usuario segun su tipo pass y user en la tabla usuario?

Última edición por webankenovi; 12/10/2013 a las 14:07
  #3 (permalink)  
Antiguo 12/10/2013, 14:52
Avatar de panabuntu  
Fecha de Ingreso: octubre-2013
Mensajes: 19
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Consulta a dos tablas con PDO

--------------------

var_dump da como resultado bool(false)

Bueno describo las tablas. Tengo dos tablas una llamada usuario que contiene nombre de usuario, pass y el id del tipo de usuario. La otra tabla es tipo_usuario que contiene el id y el nombre del tipo de usuario(admin, local_user...).

Lo que quiero hacer es un login, donde devuelve un false en el caso de que el usuario no exista y en caso contrario devuelve los datos de usuario (id_usuario, nombre_usuario, nombre_tipo_usuario), ya con estos datos, según el tipo de usuario se aplicaran unas opciones u otras.

A lo mejor se ve la consulta mas clara asi:

Código PHP:
$consulta "SELECT usuario.id_usuario, usuario.nombre_usuario, usuario.pass_usuario, tipo_usuario.nombre_tipo_usuario FROM usuario, tipo_usuario 
                WHERE usuario.tipo_usuario_id_tipo_usuario = tipo_usuario.id_tipo_usuario 
                AND usuario.nombre_usuario = :usuario 
                AND usuario.pass_usuario = :pass;"

Un saludo y gracias!!!

Última edición por panabuntu; 12/10/2013 a las 15:03
  #4 (permalink)  
Antiguo 13/10/2013, 12:24
Avatar de panabuntu  
Fecha de Ingreso: octubre-2013
Mensajes: 19
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Consulta a dos tablas con PDO

---------------------

Nadie puede ayudarme?¿?¿

He probado mil cosas y no se que hacer!!
  #5 (permalink)  
Antiguo 13/10/2013, 13:15
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta a dos tablas con PDO

Prueba con INNER JOIN .

Ahora yo te pregunto por que en vez de poner el id_tipo_usuario en la tabla usuarios no pones directamente el tipo? otra cosa si es para un login por que no separas las consultas primero verificas si existe el user y si concuerdan las pass y si es correcto extraes su tipo y ya creas la sessiones .
  #6 (permalink)  
Antiguo 14/10/2013, 03:29
Avatar de panabuntu  
Fecha de Ingreso: octubre-2013
Mensajes: 19
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Consulta a dos tablas con PDO

He probado con esta nueva consulta pero me da el mismo resultado. bool(false)

Código PHP:
SELECT usuario.id_usuario idUsuariousuario.nombre_usuario usuariousuario.pass_usuario passtipo_usuario.nombre_tipo_usuario tipoUsuario FROM usuario
INNER JOIN tipo_usuario ON usuario
.tipo_usuario_id_tipo_usuario tipo_usuario.id_tipo_usuario
WHERE usuario
.nombre_usuario 'panabuntu'
AND usuario.pass_usuario 12345
Tengo dos tablas distintas porque me parece mas practico y así se ahorran registros ya que solo hago referencia al tipo de usuario y no tengo mil registros con el mismo dato. Y a la hora de modificar o añadir los tipos de usuario lo puedo hacer en su tabla correspondiente de manera mas sencilla sin tener que modificar todos los registros de la tabla usuario.

Bueno, que no se porque me dan estos resultados, en teoría tendría que funcionar bien las dos consultas....tampoco entiendo porque solo no funciona si uno dos tablas, si solo utilizo una no me da ningun problema.

Estoy desesperado!!!
  #7 (permalink)  
Antiguo 18/10/2013, 03:38
Avatar de panabuntu  
Fecha de Ingreso: octubre-2013
Mensajes: 19
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Consulta a dos tablas con PDO

--------------------------

Bueno, que podría hacerlo con dos consultas, pero no entiendo porque no lo puedo hacer mezclando dos tablas, ya que para mi sería lo mas optimo y lo mas normal. Pero que no entiendo porque no funciona.

Por favor, alguien que me eche un cable!!!!!!
  #8 (permalink)  
Antiguo 18/10/2013, 10:19
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta a dos tablas con PDO

Haber borra de la tabla usuarios el id del tipo de usuario y en latabla de tipos solo 2 columnas una user y otra el tipo y ahora haz la consulta relacionando el user, es un ejemplo na mas pero pruebalo te funcionara .
  #9 (permalink)  
Antiguo 19/10/2013, 04:20
Avatar de panabuntu  
Fecha de Ingreso: octubre-2013
Mensajes: 19
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Consulta a dos tablas con PDO

Bueno, que hoy he probado y parece que misteriosamente funciona....sin cambiar nada....misterios de la vida...no se si marcar el tema como solucionado o como misterio.

Muchas gracias webankenovi por tu atención!!!

Etiquetas: pdo, select, tabla, tablas
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 17:51.