Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/04/2011, 12:39
Avatar de _ssx
_ssx
 
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años, 6 meses
Puntos: 60
Respuesta: PDO distintas BD pero y los LIMIT 0,40

Hola

Creo que necesitas trabajar más aún con tu modelo de manejo de datos con SQL, ya que estas manejando tu SQL "A mano" en mi parecer necesitas un objeto "intermedio" o adaptador que se ocupe te acomodar las consultas y convertirlas al MODELO de base de datos adecuado..

El método query debería de ser un método "wrapper" del método query de PDO para que puedas aplicar reglas especificas del motor que estas usando antes de enviar la query al motor de base de datos.

Código PHP:

interface Adapter{
    public function 
query($consulta,$params,$limit);
}

class 
MySql implements Adapter{
   public function 
query($consulta,$params,$limit){
          
//Aqui creas tu cadena SQL conforme lo hace Mysql con los paremetros enviados.
          
return $consulta.$params.$limit;
  }
}

class 
PostGres implements Adapter{
   public function 
query($consulta,$params,$limit){
          
//Aqui creas tu cadena SQL conforme lo hace Postgres con los paremetros enviados.
          
return $consulta.$params.$limit.' OFFSET ';
  }
}

class 
Db{
     private 
$_adapter;
     private 
$_db;

     public function 
setAdapter(Adapter $adapter){
          
$this->_adapter $adapter;
     }
     
     public function 
query($consulta,$params,$limits){
           
$this->_db->query($this->_adapter('SELECT','campos',array(0,4)));
     }

Algo así el chiste es que tengas un "wrapper" antes de dejar caer los datos sobre PDO

Ahora si cumplirias tu objetivo de SOLO cambiar la base de datos en el setAdapter ;)

Por que MySQL, Postgress o ORACLE estarian cumpliendo con el CONTRATO de implementación de la interface.

Código PHP:
$db->setAdapter(new Mysql());
$db->setAdapter(new Postgress()); 
Cabe mencionar que los frameworks actuales tienen ya super bien definidos sus adaptadores para que no te manejes el SQL a mano
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador