Introducción a PDO: PHP Data Objects

PDO es una librería de acceso a bases de datos para PHP.
La necesidad de una librería como PDO nace de la gran cantidad de bases de datos soportadas por PHP. Cada una de estas bases de datos necesita de su propia API para hacer tareas generalmente comunes al resto. Esto provoca que nuestro código no sea fácil portar de una base de datos a otra y ayuda (con la colaboración de muchas otras cosas) a complicarnos la vida.

Para solucionar este problema en PHP existen múltiples librerías ofrecidas por terceros. ADODB, PEAR DB y MDB2 son algunas de las más populares.

Aunque la mayoría de estas librerías son mucho mas maduras que PDO y en algunos aspectos ofrecen muchas más funcionalidades, PDO tiene ciertas ventajas que no podemos obviar.

Para empezar: la velocidad. PDO esta compilado en C/C++, por los que ofrece mayor rapidez de ejecución que sus competidoras (de código interpretado). Por otra parte: viene incorporado en PHP5 (es la solución “oficial” y en continua evolución) y desde PHP 5.1 viene “enabled” por defecto. De esta manera no tienes que importar ni cargar código de terceros cuando quieres usarlo.

No hay que olvidar que PDO está completamente orientado a objetos, lo que facilita su uso frente al engorro de las decenas de diferentes funciones de las API de cada sistema de bases de datos.

PDO actualmente soporta: Microsoft SQL Server, Firebird, IBM Informix, MySQL, Oracle, ODBC, PostgreSQL, SQLite.

Conexión a la base de datos

Una buena manera de ver la idea que hay detrás de una librería como PDO es mostrar por un lado como se realiza una conexión con la API de MySQL y PostgreSQL y por otro lado la versión con PDO.

MySQL:

[code language=’php’]
$conexion = mysql_connect($host, $usuario, $password);
mysql_select_db($db, $conexion);
[/code]

PostgreSQL:

$conexion =pg_connect(“host=$host dbname=$db user=$usuario password=$password”);

Como podemos ver, a pesar de usar dos funciones diferentes para realizar la conexión, la forma de hacerlo es prácticamente la misma.

Ahora, con PDO.

Para MySQL:

$conexion = new PDO(“mysql:host=$host; dbname=$db”, $usuario, $password);

Para PostgreSQL:

$conexion = new PDO(“pgsql:host=$host; dbname=$db”, $usuario, $password);

Solo el nombre del driver de la base de datos que usemos cambia.

Ahora, a modo de ejemplo, veamos como se haría una simple consulta SELECT con PDO.

$conexion = new PDO(“mysql:host=$host; dbname=$db”, $usuario, $password);
//queda claro que las variables necesarias para el DSN están convenientemente informadas.
//$host=localhost, $db = basedatos, …


$sql = “SELECT * FROM tabla ORDER by id”;
$query = $conexion->query($sql);
while( $row = $query->fetch(PDO::FETCH_ASSOC) )
{
print_r($row);
}

Espero profundizar mas en diferentes aspectos de PDO como excepciones, sentencias preparadas y manipulación de rowsets entre otros en los próximos post.

¡Hasta pronto!

9 Replies to “Introducción a PDO: PHP Data Objects”

  1. Interesante método, yo personalmente la he escuchado cientos de veces, pero nunca había visto ni siquiera un triste ejemplo de como utilizarla :)

    Ahora que sé que está “embedida” en el PHP5, por lo menos habrá que hacerle algo más de caso, ya que las herramientas creadas por terceros en general nunca me han convencido.

    Thank you!

  2. muy interesante pero cuando lo quise correr en mi navegador no me corrio por error en la funcion
    fetch, que puedo hacer para corregirlo , que debo de modificar?

  3. Y un ejemplo para SQL SERVER? Ya tengo el DSN creado en windows 7, Se llama “SQLALEMAN”.

    saludos

  4. bueno en mi parte me parece interesante y para los que no sabian un CMS como Drupal usa PDO se puede decir que es su nucleo par a los que usan drupal y no sabian :) recien me entere en mi capasitacion y sigo aprendiendo mas cosas saludos buen aporte :)

Deja un comentario

Tu dirección de correo electrónico no será publicada.