19: Conexión PDO
Tutorial 19: Conexión PDO
¿Qué es PDO?
PDO (PHP Data Objects) es una extensión de PHP que define una interfaz consistente para acceder a bases de datos. Proporciona una capa de abstracción que permite trabajar con diferentes sistemas de bases de datos (MySQL, PostgreSQL, SQLite, etc.) usando las mismas funciones.
Configuración de la base de datos
Antes de comenzar con la conexión, necesitamos identificar los datos de acceso a nuestra base de datos:
Host: El servidor donde está alojada la base de datos
Database name: Nombre de la base de datos
Username: Usuario con permisos de acceso
Password: Contraseña del usuario
En PHPMyAdmin podemos encontrar esta información en la sección "Cuentas de usuarios". Para un servidor local típico:
Host: localhost
Usuario: root
Contraseña: (vacío)
Estructura del Proyecto
Vamos a trabajar en la capa MODELO, siguiendo la arquitectura de capas donde el modelo es la última capa y la más protegida:
mi_proyecto/ ├── models/ │ ├── Conexion.php │ └── Crud.php
Código de Conexión PDO
Archivo: models/Conexion.php
<?php class Conexion { /** * Método público para establecer la conexión a la base de datos * @return PDO Objeto de conexión PDO */ public function conectar() { try { // Parámetros de conexión $host = "localhost"; $dbname = "cursophp"; $username = "root"; $password = ""; // Crear instancia de PDO con los parámetros necesarios $link = new PDO( "mysql:host=$host;dbname=$dbname", $username, $password ); // Configurar el manejo de errores $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Mensaje de éxito (opcional, solo para pruebas) echo "✅ Conexión exitosa a la base de datos: $dbname"; return $link; } catch (PDOException $e) { // Capturar y mostrar errores de conexión die("❌ Error de conexión: " . $e->getMessage()); } } } // Código de prueba temporal (se puede eliminar después) /* $a = new Conexion(); $a->conectar(); */ ?>
Archivo: models/Crud.php
<?php // Incluir la clase Conexion require_once 'Conexion.php'; class Crud extends Conexion { /** * Ejemplo de método que utiliza la conexión */ public function mostrarMensaje() { // Obtener la conexión heredada $conexion = $this->conectar(); // Aquí irán las operaciones CRUD echo "<br>🔧 Preparado para realizar operaciones CRUD"; } } // Código de prueba $crud = new Crud(); $crud->mostrarMensaje(); ?>
Explicación detallada del código
1. Clase Conexion
Encapsula toda la lógica de conexión
Método
conectar()público para ser accesible desde otras clases
2. Objeto PDO
Requiere 3 parámetros principales:
new PDO("mysql:host=localhost;dbname=cursophp", "root", "")
Primer parámetro: Tipo de BD + host + nombre BD
Segundo parámetro: Usuario
Tercer parámetro: Contraseña
3. Manejo de errores
Usamos
try-catchpara capturar excepciones PDOConfiguramos el modo de error con
setAttribute()Mensajes descriptivos para identificar problemas
4. Herencia en Crud
Crud extends Conexionhereda el métodoconectar()Esto permite reutilizar la conexión en todas las operaciones de BD
Pruebas de conexión
Prueba exitosa:
✅ Conexión exitosa a la base de datos: cursophp 🔧 Preparado para realizar operaciones CRUD
Prueba con errores comunes:
Base de datos incorrecta:
Cambiar$dbname = "cursophp2";❌ Error de conexión: SQLSTATE[HY000] [1049] Unknown database 'cursophp2'
Usuario incorrecto:
Cambiar$username = "root2";❌ Error de conexión: SQLSTATE[HY000] [1045] Access denied for user 'root2'@'localhost'
Contraseña incorrecta:
Agregar$password = "12345";❌ Error de conexión: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost'
Buenas prácticas implementadas
Nombres de bases de datos: Usar minúsculas y guiones bajos
Manejo de errores: Siempre capturar excepciones
Separación de capas: Conexión en modelo, no en vistas
Herencia: Aprovechar POO para reutilizar código
Configuración PDO: Establecer modo de error para mejor depuración
Próximos pasos
En el siguiente tutorial, comenzaremos a implementar las operaciones CRUD:
Create: Insertar registros
Read: Leer/consultar registros
Update: Actualizar registros
Delete: Eliminar registros
Nota importante
Cuando migres a un hosting remoto, deberás actualizar estos datos:
Host: Puede ser "localhost" o un servidor específico
Usuario: El que hayas creado en el hosting
Contraseña: La configurada para ese usuario
Base de datos: Puede incluir prefijos (ej: "bm260_cursophp")
Comentarios
Publicar un comentario