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

hacer 2 consultas seguidas

Estas en el tema de hacer 2 consultas seguidas en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola. Tengo montado un MVC y para el acceso a datos que utiliza PDO. El problema es que en la parte del controlador cuando hago ...
  #1 (permalink)  
Antiguo 01/03/2010, 06:32
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación hacer 2 consultas seguidas

Hola.

Tengo montado un MVC y para el acceso a datos que utiliza PDO.

El problema es que en la parte del controlador cuando hago una consulta a la BBDD utilizando una clase de acceso a datos va bien pero si intento una segunda consulta utilizando esa misma clase o instanciando otra me da el siguiente error:

Call to a member function execute() on a non-object in...

Este error lo da al hacer execute de la segunda consulta.

Pongo parte del código para que se vea mejor.

//Instancia la clase para consulta de articulos
require 'models/articulosModel.php';
$articulos = new articulosModel();

//Primera consulta que funciona OK
$art = $articulos->getDisponibles();
$data['articulos'] = $art;

//Consulta que da error
$art = $articulos->getProximos();
$data['proximos'] = $art;


En ambos casos las funciones de consulta tienen esta estructura:
public function getProximos()
{

$fechaActual = date('Ymd');

$sql = "select arti_codigo.... "; //Es una consulta bien formada

$consulta = $this->db->prepare($sql);
$consulta->execute(array('N',$fechaActual));
return $consulta;
}

Donde db es la conexión que se crea con PDO en el constructor de la clase.

Si alguien le ha pasado algo parecido o sabe proque me ocurre se lo agradecería
Un saludo a todos
  #2 (permalink)  
Antiguo 01/03/2010, 07:25
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: hacer 2 consultas seguidas

Cita:
Iniciado por Javier66 Ver Mensaje
Código PHP:
$consulta $this->db->prepare($sql);
$consulta->execute(array('N',$fechaActual));
return 
$consulta;

El metodo prepare() te devuelve un objeto o un resource??

EDIT: respondi sin leer el manual, perdon, devuelve un objeto.
Tal vez esto sirva

http://bytes.com/topic/php/answers/5...ute-non-object

Que version de PHP tenes?

http://bugs.php.net/bug.php?id=38886
__________________
HV Studio
Diseño y desarrollo web

Última edición por jackson666; 01/03/2010 a las 07:40
  #3 (permalink)  
Antiguo 01/03/2010, 07:48
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: hacer 2 consultas seguidas

Version 5.2.9-1
  #4 (permalink)  
Antiguo 01/03/2010, 09:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: hacer 2 consultas seguidas

Algunos drivers de PDO requieren que uses closeCursor en tu objeto antes de poder llamar a execute nuevamente.

Saludos.
  #5 (permalink)  
Antiguo 08/03/2010, 04:11
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: hacer 2 consultas seguidas

Efectivamente era por el diver de PDO. Al acer closeCursor despues de cada consulta se soluciona el tema.

Muchas gracias a todos
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 18:07.