En este tema, aprenderemos a utilizar PDO (PHP Data Objects) para interactuar con bases de datos en PHP. PDO es una extensión que define una interfaz ligera y consistente para acceder a bases de datos en PHP. A diferencia de las funciones específicas de MySQL, PDO permite trabajar con múltiples bases de datos utilizando la misma API.
¿Qué es PDO?
PDO es una extensión de PHP que proporciona una interfaz para acceder a bases de datos. Algunas de sus características clave son:
- Abstracción de la base de datos: PDO permite cambiar de base de datos sin cambiar el código PHP.
- Seguridad: PDO soporta consultas preparadas, lo que ayuda a prevenir inyecciones SQL.
- Flexibilidad: PDO soporta múltiples bases de datos, incluyendo MySQL, PostgreSQL, SQLite, y más.
Configuración de PDO
Antes de comenzar a usar PDO, asegúrate de que la extensión PDO esté habilitada en tu instalación de PHP. Puedes verificar esto creando un archivo phpinfo.php
con el siguiente contenido:
Busca la sección de PDO en la salida para confirmar que está habilitada.
Conectando a una Base de Datos con PDO
Para conectarse a una base de datos MySQL usando PDO, necesitas los siguientes datos:
- Host (servidor de la base de datos)
- Nombre de la base de datos
- Usuario de la base de datos
- Contraseña del usuario
Aquí tienes un ejemplo de cómo conectarse a una base de datos MySQL usando PDO:
<?php $dsn = 'mysql:host=localhost;dbname=testdb'; $username = 'root'; $password = ''; try { $pdo = new PDO($dsn, $username, $password); // Establecer el modo de error de PDO a excepción $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Conexión exitosa"; } catch (PDOException $e) { echo "Error de conexión: " . $e->getMessage(); } ?>
Explicación del Código
- $dsn: Data Source Name, contiene la información necesaria para conectarse a la base de datos.
- $username y $password: Credenciales de acceso a la base de datos.
- new PDO($dsn, $username, $password): Crea una nueva instancia de PDO.
- setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION): Configura PDO para que lance excepciones en caso de error.
Consultas Preparadas
Las consultas preparadas son una característica importante de PDO que ayuda a prevenir inyecciones SQL. Aquí tienes un ejemplo de cómo usar consultas preparadas:
Insertar Datos
<?php $sql = "INSERT INTO users (name, email) VALUES (:name, :email)"; $stmt = $pdo->prepare($sql); $name = 'John Doe'; $email = '[email protected]'; $stmt->bindParam(':name', $name); $stmt->bindParam(':email', $email); $stmt->execute(); echo "Datos insertados correctamente"; ?>
Explicación del Código
- $sql: La consulta SQL con marcadores de posición.
- $stmt = $pdo->prepare($sql): Prepara la consulta.
- bindParam: Vincula los parámetros a los marcadores de posición.
- execute: Ejecuta la consulta.
Seleccionar Datos
<?php $sql = "SELECT * FROM users WHERE email = :email"; $stmt = $pdo->prepare($sql); $email = '[email protected]'; $stmt->bindParam(':email', $email); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($result as $row) { echo $row['name'] . " - " . $row['email'] . "<br>"; } ?>
Explicación del Código
- fetchAll(PDO::FETCH_ASSOC): Recupera todos los resultados como un array asociativo.
Ejercicio Práctico
Ejercicio 1: Conectar a una Base de Datos y Realizar una Consulta
- Objetivo: Conectar a una base de datos MySQL y seleccionar todos los registros de una tabla llamada
products
. - Instrucciones:
- Crea una base de datos llamada
shop
. - Crea una tabla llamada
products
con las columnasid
,name
, yprice
. - Inserta algunos registros en la tabla
products
. - Escribe un script PHP que se conecte a la base de datos y seleccione todos los registros de la tabla
products
.
- Crea una base de datos llamada
Solución
<?php $dsn = 'mysql:host=localhost;dbname=shop'; $username = 'root'; $password = ''; try { $pdo = new PDO($dsn, $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM products"; $stmt = $pdo->prepare($sql); $stmt->execute(); $products = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($products as $product) { echo $product['name'] . " - $" . $product['price'] . "<br>"; } } catch (PDOException $e) { echo "Error: " . $e->getMessage(); } ?>
Retroalimentación
- Error Común: No establecer el modo de error de PDO a excepción. Esto puede dificultar la depuración de errores.
- Consejo: Siempre usa consultas preparadas para prevenir inyecciones SQL.
Conclusión
En esta sección, hemos aprendido a usar PDO para interactuar con bases de datos en PHP. Hemos cubierto cómo conectarse a una base de datos, realizar consultas preparadas, y manejar los resultados. PDO es una herramienta poderosa y flexible que mejora la seguridad y la portabilidad de tus aplicaciones PHP. En el próximo módulo, profundizaremos en la seguridad en bases de datos para proteger aún más tus aplicaciones.
Curso de Programación en PHP
Módulo 1: Introducción a PHP
- ¿Qué es PHP?
- Configuración del Entorno de Desarrollo
- Tu Primer Script en PHP
- Sintaxis y Variables en PHP
- Tipos de Datos en PHP
Módulo 2: Estructuras de Control
Módulo 3: Funciones
- Definiendo y Llamando Funciones
- Parámetros de Función y Valores de Retorno
- Ámbito de Variables
- Funciones Anónimas y Closures
Módulo 4: Arrays
Módulo 5: Trabajando con Formularios
- Manejo de Datos de Formularios
- Validación de Formularios
- Subida de Archivos
- Seguridad en Formularios
Módulo 6: Trabajando con Archivos
- Lectura y Escritura de Archivos
- Funciones de Manejo de Archivos
- Permisos de Archivos
- Funciones de Directorio
Módulo 7: Programación Orientada a Objetos (POO)
- Introducción a la POO
- Clases y Objetos
- Propiedades y Métodos
- Herencia
- Interfaces y Clases Abstractas
- Traits
Módulo 8: Trabajando con Bases de Datos
- Introducción a las Bases de Datos
- Conectando a una Base de Datos MySQL
- Realizando Operaciones CRUD
- Usando PDO para la Interacción con la Base de Datos
- Seguridad en Bases de Datos
Módulo 9: Técnicas Avanzadas de PHP
- Manejo de Errores y Excepciones
- Sesiones y Cookies
- Expresiones Regulares
- Trabajando con JSON y XML
- PHP y Servicios Web
Módulo 10: Frameworks de PHP y Mejores Prácticas
- Introducción a los Frameworks de PHP
- Empezando con Laravel
- Arquitectura MVC
- Mejores Prácticas en el Desarrollo de PHP
- Pruebas y Depuración