martes, 19 de julio de 2011

Objetos PDO y los controladores para Bases de Datos- PHP

El PDO (PHP DataObjects) es un objeto que nos brinda una interfaz en PHP para realizar conexiones a bases de datos (Oracle, MySQL, Firebird, Informix, PostgreSQL, etc) y realizar transacciones.

Ventaja de usar PDO
          La interfaz de un objeto PDO, permite usar las mismas funciones sin importar la Base de Datos que vayas a usar (Oracle, MySQL, Informix, etc), esto proporciona un entorno, en el cual sólo nos preocupemos por las operaciones que vayamos a realizar con la Base de Datos. 


¿Cómo instalarlo?
 (*Fuentes: Domine PHP5 -José López Quijado, editorial Alfaomega y http://www.php.net/manual/en/pdo.installation.php)

 En sistemas UNIX (configurar primero la extensión PDO como un módulo compartido):
    ./configure --with-zlib --enable-pdo=shared

Ahora, buscaremos el archivo php.ini y vamos a modificarlo según lo siguiente:

Encontrar la siguiente línea y descomentarla (Es decir, quitarle el  que le precede):
     En  UNIX:
          extension=pdo.so
     En WINDOWS:
           extension=php_pdo.dll
(*Si no aparece,  puedes escribirla en el mismo archivo).


Posteriormente descomentar la línea del controlador correspondiente al motor de la base de datos que vas a usar (Si no aparece la línea en el archivo de configuración, la puedes escribir ahí mismo, pero asegúrate de que no aparezca en otro lado del archivo o no se esté llamando de otra forma genérica. Nota: Ver más abajo sobre drivers genéricos). A continuación se muestran los drivers que se pueden utilizar, según el motor de la base de datos a usar y el sistema operativo.

Motor UNIX Windows
Firebird/Interbase pdo_firebird.so php_pdo_firebird.dll
Informix pdo_informix.so php_pdo_informix.dll
MsSQL pdo_mssql.so php_pdo_mssql.dll
MySQL pdo_mysql.so php_pdo_mysql.dll
Oracle Call Interface pdo_oci.so php_pdo_oci.dll
Oracle Call Interface 8 pdo_oci8.so php_pdo_oci8.dll
ODBC v3 pdo_odbc.so php_pdo_odbc.dll
PostgreSQL pdo_pgsql.so php_pdo_pgsql.dll
SQLite pdo_sqlite.so php_pdo_sqlite.dll
 (-Fin de las fuentes citadas).



No olvidar que...
  • Los controladores deben estar almacenados en la carpeta "ext"  o carpeta de extensiones, del directorio PHP. Asegúrate de que tu controlador (el archivo .dll ó  .so) esté en esa carpeta.
  • Por lo regular  las líneas vienen comentadas, a fin de que sólo se descomente aquella que se vaya a utilizar.

Usando XAMPP....

Si utilizas XAMPP, no hay que preocuparse por buscar y descargar los drivers, estos ya vienen junto con  la instalación. Este punto sólo puedo asegurarlo para Windows, desconozco si en la instalación en los sistemas Unix/Linux sea igual.

Drivers Genéricos...
Puede suceder que, alguno de los drivers citados anteriormente, no se encuentre en el php.ini, sin embargo, esto no quiere decir que no queda de otra más que escribirlo, posiblemente ya exista otra línea con otro driver PDO similar. Por ejemplo:
Seguramente en el php.ini que trae XAMPP no aparezca la línea "extension=php_pdo_mysql.dll" . Sin embargo antes de escribirla, recomiendo que primero busquen la línea:
   extension=php_pdo_mysql_libmysql.dll
Esta línea es equivalente a la anterior. Posiblemente esta última tenga más funcionalidades a comparación de la primera.

Escribir la línea del driver a usar  es la última opción a la cuál recurrir.

Dejar dos drivers iguales activados...
Por otro lado, no intenten dejar dos líneas de drivers iguales descomentadas, ya que el servidor les mostrará una molesta advertencia indicando que el controlador ya está en uso. Por ejemplo, retomando el caso anterior de MySQL, dejen sólo una de las dos líneas descomentadas.




Por mi parte, esto es lo más esencial acerca de lo que hay que saber sobre el PDO y los drivers. Dudas, comentarios, lo que sea, háganmelo saber, saludos.