28 07

PDO: PHP Data objects

Publicado por Yoné Rocha en Diseño Web, PHP

PDO es una extensión de acceso a datos para PHP5, la cual nos permite conectar a multitud de sistemas gestores de bases de datos indicando el driver correspondiente.

Sus grandes ventajas radican en que; Es una extensión eficiente que fue desarrollada en C. Sus métodos son independientes del sistema gestor de bases de datos que usemos, permitiendo que una aplicación pueda migrar de un motor de  bd a otro con sólo indicar el driver correspondiente al nuevo motor. Y Previene que en las consultas se inyecte SQL malicioso (SQL Injection) usando consultas parametrizadas.

Comenzamos con unos ejemplos, para los que he tomado MySQL como SGBD:

Conexión PDO

$db = new PDO('mysql:host=' . $host . ';dbname=' . $db, $usuario, $contrasena);
//Juego de caracteres
$db->query('SET NAMES UTF8');

Consulta PDO

 
//preparamos la consulta
$consulta = $db->prepare('
SELECT modelo
FROM coche
WHERE marca = :valor
'
);
//parametrizamos los valores que vamos a enviar a la consulta, evita SQL injection
$consulta->bindValue(':valor', 'mercedes', PDO::PARAM_STR);
//ejecutamos la consulta
$consulta->execute();
//imprimimos los valores devueltos en un array asociativo
print_r($consulta->fetchAll(PDO::FETCH_ASSOC));
 

Como puedes ver es muy sencillo usar PDO, explicaré lo que hacemos en cada paso.

  1. El método prepare() deja lista la consulta para ser ejecutada.
  2. bindValue() prepara los parámetros que se le van a enviar a la consulta previniendo inyecciones SQL ¡Adoro esto! Los parámetros deben tener siempre el formato :nombreParametro para que se pueda identificar el valor en la consulta. Ademá podemos indicar el tipo de datos que vamos a enviar PARAM_STR o PARAM_INT.
  3. La tarea de Execute() es bastante obvia, ejecutar la consulta que hemos preparado.
  4. Y fechAll() devuelve todos los valores de la consulta en un arreglo asociativo, también se podría devolver mediante el método fech() si queremos recorrer los valores con un bucle.

Existen otras maneras de pasar a una consulta parámetros de entrada, personalmente no las uso porque me acostumbré a trabajar con la función bindValue() pero son tan correctas como ésta última. Veámoslas a continuación:

 
//Los parametros se indican con ?
$consulta = $db->prepare('
SELECT modelo
FROM coche
WHERE marca = ?
AND color = ?
'
);
//Ejecutamos la consulta y pasamos los parámetros en el mismo orden de aparición en la consulta
$consulta->execute(array('mercedes', 'rojo'));
 
 
$consulta = $db->prepare('
SELECT modelo
FROM coche
WHERE marca = :valor
'
);
//agregamos los valores al parámetro
$consulta->bindParam(':valor', 'mercedes');
//Ejecutamos la consulta
$consulta->execute();
 

Referencias: jourmoly.com.ar | Manual Oficial

Puntuación: 5.1/10 (7 votos emitidos)

  • Imprimir
  • Facebook
  • Twitter
  • Del.icio.us
  • Technorati
  • Digg
  • Menéame

Dirección trackback para este artículo:
http://promineostudios.com/blog/articulo/pdo-php-data-objects/trackback

Conozca los últimos comentarios de éste artículo agregando el feed RSS a su lector de noticias

Artículos Relacionados
Referencias a este artículo
4 de agosto del 2009 a las 17:44 - Referencia en
Escribe un comentario sobre este artículo

:) :D XD :( :-o 8O :-? 8) :-x :p :-| ;-) :oops: :cry: :evil: :roll: :!: :?: :idea: :arrow: :mrgreen:

  • bloglines
  • Google
  • Netvibes
  • MyYahoo
  • MyMsn
Artículos Destacados
Autores
Categorías
Archivo

2009 - PromineoStudios - Todos los derechos Reservados

Diseño con estándares web - XHTML CSS - Versión anterior del sitio