PDO con PHP y MySQL

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

mysql_pconnect y mysql_connect

mysql_pconnect se usa para abrir una conexion de la base de datos persistente, en que nos beneficia esto? Pues que cuando realices otra consulta sql a la bd la función buscara un enlace de conexión abierta, si encuentra una conexión con el mismo usuario y password lo que hara sera reutilizarla, en cambio mysql_connect lo que hace es abrir otra conexión a la bd. Otra diferencia es que cuando acabe la ejecución de algún script mysql_pconnet no se cerrara, esta permanecera abierta para ser reutilizada en el futuro.
Elegir entre estas dos opciones dependera de que tantos registros tengas en tu bd, para un rapida respuesta recomendaría la conexión persistente.

Dejo un script de cómo llamar a estas dos funciones:

mysql_pconnect (conexión persistente)

El primer parámetro sera el hostname y puedes poner el puerto(si es 80 no es necesario ponerlo).
El segundo y tercer parámetro serán usuario y contraseña respectivamente

$link = mysql_pconnect("localhost:80","root","pwd") ;

mysql_connect

Para realizar una conexion normal a mysqlno cambia mucho los parámetros.
Como primer parámetro se pondrá el hostnameLos siguientes serán igual: usuario y contraseña

$link = mysql_connect("localhost","root","pwd") ;

para investigar mas sobre estas funciones pongo a su disposición links de interes:

Recursos

página web