PDO con PHP y MySQL

0
45

PDO (PHP Data Object) es un driver que viene por defecto desde la versión 5.1 de PHP, nos sirve para poder conectarnos a diversas bases de datos.
El problema de utilizar las funciones de MySQL para la conexión es que tenemos que preocuparnos por validar cada una de las variables que pasemos para la ejecución de una consulta.
Primero tendríamos que verificar que magic_quotes() este desactivado, luego utilizando muchas funciones como por ejemplo addslashes(), mysql_real_escape_string() y verificando que no quede ningún agujero en tu código.
En realidad esto es muy frustrante a la hora de ver que todo lo que has echo para evitar las inyecciones SQL han sido en vano, o tal vez después que te digan que no va en MySQL sino en PostgreSQL tendrías que cambiar tu código de nuevo. Bahhh!!
La ventaja de utilizar PDO y no las funciones MySQL para conectarse a la DB (mysql_connect() o mysql_pconnect()) es que con este Driver es mucho mas seguro la llegada de datos seguros a la base de datos, ya que PDO se encarga de filtrar y evitar las inyecciones SQL.
Veamos como podemos utilizar este Driver:

  1. Primero debemos asegurarnos que esté habilitado en tu php.ini.(Quítale los comentarios)
    extension=php_pdo
    extension=php_pdo_mysql
  2. Luego en nuestro script llamaremos al Driver de Esta manera:
    try
    {
    $cn = new PDO("mysql:dbname=email;host=localhost","user","password");
    $cn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }catch( PDOException $e)
    {
    echo "Error Connection: " . $e->getMessage();
    }
  3. Al realizar consultas tendremos que mandar los parámetros como Comandos Preparados (Prepared Statements).
    //SELECT
    $query = $cn->prepare("SELECT *FROM user WHERE status=?");
    //AQUI LE PASAMOS EL PARAMETRO
    $query->execute(array("A"));
    while($row = $query->fetch()):
    echo $row['email'];
    endwhile;

Si quiere ver que tipos de bases de datos soporta el Driver solo tienes que ejecutar esta rutina:

foreach(PDO::getAvailableDrivers() as $driver)
{
echo $driver;
}

Aquí dejo algunos enlaces de interés respecto a PDO.
[Enlaces]
PHP Data Objects
PDO SQL Statements
ASP Hosting