PDO
PHP Manual

Conexiones y su administración

Las conexiones se establecen creando instancias de la clase base PDO. No importa el controlador que se utilice; siempre se usará el nombre de la clase PDO. El constructor acepta parámetros para especificar el origen de datos (conocido como DSN) y, opcionalmente, el nombre de usuario y la contraseña (si la hubiera).

Ejemplo #1 Conectarse a MySQL

<?php
$gbd 
= new PDO('mysql:host=localhost;dbname=test'$usuario$contraseña);
?>

Si hubieran errores de conexión, se lanzará un objeto PDOException. Se puede capturar la excepción si fuera necesario manejar la condición del error, o se podría optar por dejarla en manos de un gestor de excepciones global de una aplicación configurado mediante set_exception_handler().

Ejemplo #2 Manejo de errores de conexión

<?php
try {
    
$gbd = new PDO('mysql:host=localhost;dbname=test'$usuario$contraseña);
    foreach(
$gbd->query('SELECT * from FOO') as $fila) {
        
print_r($fila);
    }
    
$gbd null;
} catch (
PDOException $e) {
    print 
"¡Error!: " $e->getMessage() . "<br/>";
    die();
}
?>

Advertencia

Si la aplicación no captura la excepción lanzada por el constructor de PDO, la acción predeterminada que toma el motor zend es la de finalizar el script y mostrar información de rastreo. Esta información probablemente revelará todos los detalles de la conexión a la base de datos, incluyendo el nombre de usuario y la contraseña. Es su responsabilidad capturar esta excepción, ya sea explícitamente (con una sentencia catch) o implícitamente por medio de set_exception_handler().

Una vez realizada con éxito una conexión a la base de datos, será devuelta una instancia de la clase PDO al script. La conexión permanecerá activa durante el tiempo de vida del objeto PDO. Para cerrar la conexión, es necesario destruir el objeto asegurándose de que todas las referencias a él existentes sean eliminadas (esto se puede hacer asignando NULL a la variable que contiene el objeto). Si no se realiza explícitamente, PHP cerrará automáticamente la conexión cuando el script finalice.

Ejemplo #3 Cerrar una conexión

<?php
$gbd 
= new PDO('mysql:host=localhost;dbname=test'$usuario$contraseña);
// Use la conexión aquí


// ya se ha terminado; la cerramos
$gbd null;
?>

Muchas aplicaciones web se beneficiarán del uso de conexiones persistentes a servidores de bases de datos. Las conexiones persistentes no son cerradas al final del script, sino que son almacenadas en caché y reutilizadas cuando otro script solicite una conexión que use las mismas credenciales. La caché de conexiones persistentes permite evitar la carga adicional de establecer una nueva conexión cada vez que un script necesite comunicarse con la base de datos, dando como resultado una aplicación web más rápida.

Ejemplo #4 Conexiones persistentes

<?php
$gbd 
= new PDO('mysql:host=localhost;dbname=test'$usuario$contraseña, array(
    
PDO::ATTR_PERSISTENT => true
));
?>

Nota:

Si se quiere usar conexiones persistentes, se deberá establecer PDO::ATTR_PERSISTENT en las opciones del array del controlador pasado al constructor de PDO. Si este atributo se establece con PDO::setAttribute() después de la instanciación del objeto, el controlador no utilizará conexiones persistentes.

Nota:

Si se usa el controlador PDO y las bibliotecas ODBC admiten el agrupamiento de conexiones ODBC (unixODBC y Windows lo hacen; podrían haber más), se recomienda no utilizar las conexiones persistentes de PDO, y, en su lugar, dejar el almacenamiento en caché de conexiones a la capa del agrupamiento de conexiones de ODBC. El agrupamiento de conexiones de ODBC es compartido con otros módulos en el proceso; si se le indica a PDO que almacene en caché la conexión, entonces dicha conexión nunca será devuelta al agrupamiento de conexiones de ODBC, dando como resultado la creación de conexiones adicionales para servir a los demás módulos.


PDO
PHP Manual