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: 4.8/10 (16 votos emitidos)

  • Imprimir
  • Facebook
  • 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
Ir al formulario
3

una consulta
tengo un query que une varias tablas y varias DB
utilizo php y pdo
si podrian ayudarme
tengo una duda
para recorrer una tabla utiliza la funcion fetch()
para recuperar los registros
¿cual funciones es para recuperar los nombres de los campo de una tabla?
o cual es la manera o sintaxis con pdo??
se les agradece

Enlace Permanente | 6 de septiembre del 2010 a las 18:09 - narco ha dicho

más que con pdo deberías obtener el indice asociativo del array que devuelves con pdo

Enlace Permanente | 7 de septiembre del 2010 a las 00:04 - yoné ha dicho

Muchísimas gracias por la info. Me ha ayudado mucho.
Saludos.

Enlace Permanente | 29 de marzo del 2011 a las 19:41 - Pablo ha dicho

Escribe un comentario sobre este artículo

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

Recibe los últimos artículos en tu email
  • 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