Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PDO: Consultar dos tablas

Estas en el tema de PDO: Consultar dos tablas en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, Estoy utilizando un MVC, concretamente este . El problema que tengo, es que usa PDO y yo nunca lo había usado, así que estoy ...
  #1 (permalink)  
Antiguo 07/12/2010, 07:57
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
PDO: Consultar dos tablas

Buenas,

Estoy utilizando un MVC, concretamente este.

El problema que tengo, es que usa PDO y yo nunca lo había usado, así que estoy apriendo a ver que tal...

De momento he conseguido que me liste todas las noticias de una tabla.
Por ejemplo, en el modelo tengo esto (omito la vista y el controlador para no extenderme mucho):

Código PHP:
Ver original
  1. <?php
  2.  
  3. class NoticiasModel extends ModelBase
  4. {
  5.      public function verAll()
  6.     {
  7.                 //realizamos la consulta de todas las noticias
  8.         $consulta = $this->db->prepare("SELECT * FROM tests_news ORDER BY id");
  9.                 $consulta->execute();
  10.         //devolvemos la coleccion para que la vista la presente.
  11.         return $consulta;
  12.     }
  13.  
  14.        
  15.  
  16. }
  17.  
  18. ?>

Bueno, como he dicho ese código me trae todas las noticias. La cuestión es que con cada noticia me trae un user_id que es la id del usuario quie escribiro la noticia:



Uploaded with ImageShack.us

Entonces, lo que quiero hacer es hacer otra consulta pasandole el user_id a la tabla usuarios para que asi me muestre el nick del usuario y no su id.

El problema, es que sinceramente con PDO eso no se hacerlo. ¿Cómo podría hacerlo?
He estado investigando y tal, pero no encuentro ningun manual ni ejemplo donde muestren como consultar dos tablas (o más), etc.

Un saludo y muchas gracias,
  #2 (permalink)  
Antiguo 07/12/2010, 09:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: PDO: Consultar dos tablas

Pues lo mejor para eso es hacer un JOIN con tu tabla usuarios para extraer el nick del usuario, así te evitas hacer dos consultas.

Si esto no te satisface, pues simplemente realiza otra consulta para traer el Username...

Saludos.
  #3 (permalink)  
Antiguo 07/12/2010, 12:18
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: PDO: Consultar dos tablas

Buenas de nuevo,

Hize esto:

Código PHP:
Ver original
  1. public function verAll()
  2.     {
  3.                 //realizamos la consulta de todas las noticias
  4.         $consulta = $this->db->prepare("
  5.                               SELECT tests_news.id, tests_news.title, tests_news.content, tests_news.join_date,
  6.                               tests_news.user_id,
  7.                               tests_usuarios.username
  8.                               FROM tests_news, tests_usuarios
  9.                               WHERE tests_news.user_id=tests_usuarios.id ORDER BY tests_news.id");
  10.                 $consulta->execute();
  11.         //devolvemos la coleccion para que la vista la presente.
  12.         return $consulta;
  13.     }

De esta manera funciona perfectamente. Me muestra todas las noticias y sus autores (como quería )

Pero ahora, resulta que quiero mostrar una noticia individualmente y que me muestre sus comentarios (si es que tiene).
Para ello deseo realizar varias consultas y he ahi el problema.

¿Cómo realizo más de una consulta?

Veamos, si tengo esto:

Código PHP:
Ver original
  1. public function verNoticia($parametro)
  2.     {
  3.          
  4.         $consulta = $this->db->prepare("
  5.                                SELECT *
  6.                                FROM tests_news
  7.                                WHERE id='$parametro'
  8.                                ");
  9.  
  10.          $consulta->execute();
  11.         //devolvemos la coleccion para que la vista la presente.
  12.         return $consulta;
  13.     }

Este código me devuelve una noticia en contreto. Pero supongamos que deseo hacer otras consultas y continuar pasandole ese $parametro a las otras consultas... ¿Cómo lo haría con PDO en este caso?

Si no usara pdo no tendría ningun problema, pero claro, como estoy verde en el PDO pués...

Un saludo y muchas gracias,
  #4 (permalink)  
Antiguo 07/12/2010, 13:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: PDO: Consultar dos tablas

Pues podrias crear otro método llamado verComentariosDeNoticia y le pasas el mismo parámetro para traer los comentarios de esa noticia.

Saludos.
  #5 (permalink)  
Antiguo 08/12/2010, 10:57
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: PDO: Consultar dos tablas

Gracias GatorV, al final lo he hecho como me recomendaste y funciona. Es simple:

Código PHP:
Ver original
  1. public function verComentariosDeNoticia($parametro)
  2.     {
  3.              
  4.         $consulta = $this->db->prepare("
  5.                                SELECT tests_comments.id, tests_comments.content, tests_comments.join_date,
  6.                                tests_comments.new_id, tests_comments.user_id,
  7.                                tests_usuarios.username
  8.                                FROM tests_comments, tests_usuarios
  9.                                WHERE tests_comments.new_id='$parametro'
  10.                                AND tests_comments.user_id=tests_usuarios.id ORDER BY tests_comments.id
  11.                                ");
  12.                 $consulta->execute();
  13.  
  14.         return $consulta;
  15.     }

Ahora bien, continuo teniendo la duda... de que si en vez de haberlo hecho como me has recomendado, lo hubiera hecho, creando una nueva consulta en el método verNoticia, ¿cómo hubiera tenido que hacer esa segunda consulta?

Supongamos que en un mismo método deseo hacer más de una consulta... ¿cómo lo hago con PDO?

Bueno, eso es todo, como dije, ya esta resulto, pero me queda esa duda...

Un saludo y muchas gracias,
  #6 (permalink)  
Antiguo 08/12/2010, 11:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: PDO: Consultar dos tablas

Pues simplemente vuelve a llamar al método Prepare con la segunda consulta y luego al método execute para ejecutar la consulta y posteriormente usar fetch para leer los valores.

Saludos.
  #7 (permalink)  
Antiguo 10/12/2010, 10:00
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: PDO: Consultar dos tablas

Muchas gracias por la ayuda GatorV :)

Saludos,
  #8 (permalink)  
Antiguo 11/12/2010, 10:39
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: PDO: Consultar dos tablas

un concejo aunque ya allas resuelto el problema si estas usando consultas preparadas usa el bindParam o has la consulta colocando el signo de interrogacion (?) en el link que te deje explica bien como se usa y para que sierve saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Etiquetas: consultar, dos, pdo, 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 08:49.