Cargando la página...

Usted está aquí:

PDO (PHP Data Objects)

Publicado por Sherekan el 11.09.2008 12:44:03 en PHP - Nivel Básico

Avatar de Sherekan
Avatar de

Capa de abstracción de base de datos para PHP

Página 01 de 01 | Versión completa

Que es PDO

PDO (PHP Data Objects) es una extensión de PHP, disponible a partir de la versión 5.1, que tiene extensión para la versión 5.0 también. PDO crea básicamente una capa de abstracción, que permite al desarrollador abstraerse de la base de datos de una aplicación. Y de esa manera, hacer el código portable a otras plataformas y motores de bases de datos.

PDO tiene implementaciones para muchos motores de bases de datos, entre ellos:

- PostgreSQL
- MySQL
- Firebird
- SQLite
- DB2
- Oracle
- SQL Server

Por esta razón, muchas otras capas de abstracción como PearDB utilizan PDO como backend.

Instalación de PDO

Instalamos PDO desde PECL:

pecl install pdo


Y su implementación para MySQL (podría ser para cualquier otro motor soportado):

pecl install pdo_mysql


Finalmente agregamos estas directivas al php.ini:

extension=pdo.so
extension=pdo_mysql.so


Reiniciamos el web server, y comprobamos que se haya instalado correctamente la extensión:

php -m | grep pdo


Otra forma de verificar esto, es hacer una llamada a la función phpinfo().

phpinfo();


Tabla de ejemplo

Vamos a crear una tabla, que vamos a usar después para hacer algunas pruebas con PDO. Acá está el script SQL para MySQL:

CREATE TABLE releases (
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	version VARCHAR(10) NOT NULL,
	name VARCHAR(100) NULL,
	date DATE NOT NULL
);
INSERT INTO releases (version, name, date) VALUES ("2.2", "Potato", "2000-08-15");
INSERT INTO releases (version, name, date) VALUES ("3.0", "Woody", "2002-07-19");
INSERT INTO releases (version, name, date) VALUES ("3.1", "Sarge", "2005-06-06");


Conexión a la base de datos

PDO nos ofrece una interfaz orientada a objetos bastante sencilla de utilizar. Para establecer la conexión a la base de datos, tenemos que crear un nuevo objeto PDO, pasándole como parámetro al constructor la URL de conexión a la base de datos.
La URL de conexión a la base de datos se forma así:

db:host=hostname;dbname=dbname


Veamos un ejemplo:

try {
	$conn = new PDO("mysql:host=localhost;dbname=mydb");
} catch (PDOException $e) {
	echo $e->getMessage();
}


En caso de error, saltaría una excepción PDOException.

Para cerrar la conexión:

$db = null;


Consultas

Para realizar consultas a la base de datos, tenemos los siguientes métodos:

query()
Ejecuta la consulta pasada como parámetro, y retorna un objeto PDOStatement con el resultado. Sirve para consultas del tipo SELECT.

$sql = 'SELECT * FROM releases ORDER BY version';
foreach ($conn->query($sql) as $row) {
	echo $row['name'] . "\n";
	echo $row['version'] . "\n";
	echo $row['date'] . "\n";
}


exec()
Ejecuta la consulta pasada como parámetro y retorna el número de registros afectados. Sirve para consultas que no tienen que devolver un resultado, sino que la cantidad de registros afectados (como las consultas DELETE o UPDATE) o nada (como las consultas DDL).

$sql = "UPDATE releases WHERE id > 2";
$affectedRows = $conn->exec($sql);
echo "Registros modificados: $affectedRows";


Prepared statements

Para usar prepared statements, tenemos los métodos prepare(), bindParam() y execute() que se usan de la siguiente manera:

$sql = "INSERT INTO releases (version, name, date) VALUES (:version, :name, :date)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':name', "Etch");
$stmt->bindParam(':version', "4.0");
$stmt->bindParam(':date', "2007-04-08");
$stmt->execute();


Transacciones

Para iniciar una transacción, utilizamos el método beginTransaction():

$conn->beginTransaction();


Después podemos hacer todas las consultas que queramos, y aceptar la transacción con el método commit():

$conn->commit();


O si queremos deshacerla, utilizamos el método rollBack():

$conn->rollback();


Sencillo no?

Conclusiones

Vimos como PDO nos permite conectarnos a la base de datos, hacer consultas, crear prepared statements, y utilizar transacciones, todo a través de una capa de abstracción que permite que nuestro código sea portable.
Recomiendo leer la documentación de http://www.php.net/manual/en/ref.pdo.php para ver todo el potencial de PDO.

Página 01 de 01 | Versión completa

Descargas asociadas al artículo:

No existen descargas asociadas

Estadisticas:

Artículo leido 905 veces con un puntaje de 0.00 pts

Comentarios.

Sus comentarios son importantes.

No hay comentarios para listar, si desea puede crear el primer comentario para este artículo.

Debe estar identificado para agregar un comentario