PHP PDO
La extensión PHP Data Objects (PDO) define una interfaz ligera y consistente para acceder a bases de datos desde PHP.
PDO proporciona una capa de abstracción de acceso a datos, lo que significa que, sin importar qué base de datos se use, se pueden utilizar las mismas funciones (métodos) para consultar y obtener datos.
PDO se distribuyó con PHP 5.1, también está disponible en la extensión PECL de PHP 5.0, y no puede ejecutarse en versiones anteriores de PHP.
Instalación de PDO
Puedes verificar si la extensión PDO está instalada mediante la función phpinfo() de PHP.
Instalar PDO en sistemas Unix
En Unix o Linux necesitas agregar las siguientes extensiones:
extension=pdo.so
Usuarios de Windows
PDO y todos los controladores principales se distribuyen con PHP como extensiones compartidas. Para activarlos, simplemente edita el archivo php.ini y agrega las siguientes extensiones:
extension=php_pdo.dllAdemás, existen las siguientes extensiones de base de datos correspondientes:
;extension=php_pdo_firebird.dll ;extension=php_pdo_informix.dll ;extension=php_pdo_mssql.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_oci8.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll
Después de configurar estos ajustes, necesitamos reiniciar PHP o el servidor web.
A continuación, veamos un ejemplo concreto. El siguiente es un ejemplo de conexión a una base de datos MySQL usando PDO:
Ejemplo
$dbms='mysql'; //Tipo de base de datos
$host='localhost'; //Nombre del host de la base de datos
$dbName='test'; //Base de datos utilizada
$user='root'; //Nombre de usuario de la conexión a la base de datos
$pass=''; //Contraseña correspondiente
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass); //Inicializar un objeto PDO
echo "Conexión exitosa<br/>";
/* También puedes realizar una operación de búsqueda
foreach ($dbh->query('SELECT * from FOO') as $row) {
print_r($row); //Puedes usar echo($GLOBAL); para ver estos valores
}
*/
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
//Por defecto esta no es una conexión persistente. Si necesitas una conexión persistente a la base de datos, debes agregar un parámetro al final: array(PDO::ATTR_PERSISTENT => true) quedando así:
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>
¿Muy sencillo, verdad? A continuación, veamos en detalle la explicación específica de PHP PDO:
- Constantes predefinidas
- Gestión de conexiones de PHP PDO
- Transacciones y confirmación automática en PHP PDO
- Sentencias preparadas y procedimientos almacenados en PHP PDO
- Errores y manejo de errores en PHP PDO
- Objetos grandes (LOBs) en PHP PDO
- Clase PDO:
- PDO::beginTransaction— Inicia una transacción
- PDO::commit— Confirma una transacción
- PDO::__construct— Crea una instancia de PDO que representa una conexión a la base de datos
- PDO::errorCode— Obtiene el SQLSTATE asociado con la última operación en el identificador de la base de datos (handle)
- PDO::errorInfo— Devuelve la información de error de la última operación en la base de datos
- PDO::exec— Ejecuta una sentencia SQL y devuelve el número de filas afectadas
- PDO::getAttribute— Recupera un atributo de una conexión a la base de datos
- PDO::getAvailableDrivers— Devuelve un array de controladores disponibles
- PDO::inTransaction— Verifica si se está dentro de una transacción
- PDO::lastInsertId— Devuelve el ID o valor de secuencia de la última fila insertada
- PDO::prepare— Prepara una sentencia SQL para su ejecución y devuelve un objeto PDOStatement
- PDO::query— Ejecuta una sentencia SQL, devuelve un objeto PDOStatement, que puede entenderse como un conjunto de resultados
- PDO::quote— Añade comillas a una cadena en una sentencia SQL.
- PDO::rollBack— Revierte una transacción
- PDO::setAttribute— Establece un atributo
- Clase PDOStatement:
- PDOStatement::bindColumn— Vincula una columna a una variable de PHP
- PDOStatement::bindParam— Vincula un parámetro a un nombre de variable especificado
- PDOStatement::bindValue— Vincula un valor a un parámetro
- PDOStatement::closeCursor— Cierra el cursor, permitiendo que la sentencia pueda ejecutarse nuevamente.
- PDOStatement::columnCount— Devuelve el número de columnas en el conjunto de resultados
- PDOStatement::debugDumpParams— Imprime un comando SQL preparado
- PDOStatement::errorCode— Obtiene el SQLSTATE asociado con la última operación en el identificador de la sentencia
- PDOStatement::errorInfo— Obtiene la información de error extendida asociada con la última operación en el identificador de la sentencia
- PDOStatement::execute— Ejecuta una sentencia preparada
- PDOStatement::fetch— Obtiene la siguiente fila del conjunto de resultados
- PDOStatement::fetchAll— Devuelve un array que contiene todas las filas del conjunto de resultados
- PDOStatement::fetchColumn— Devuelve una sola columna desde la siguiente fila del conjunto de resultados.
- PDOStatement::fetchObject— Obtiene la siguiente fila y la devuelve como un objeto.
- PDOStatement::getAttribute— Recupera un atributo de una sentencia
- PDOStatement::getColumnMeta— Devuelve los metadatos de una columna en el conjunto de resultados
- PDOStatement::nextRowset— Avanza al siguiente conjunto de filas en un identificador de sentencia con múltiples conjuntos de filas
- PDOStatement::rowCount— Devuelve el número de filas afectadas por la última sentencia SQL
- PDOStatement::setAttribute— Establece un atributo de sentencia
- PDOStatement::setFetchMode— Establece el modo de obtención (fetch) predeterminado para la sentencia.