Conexión segura con PDO en PHP: archivo con.php explicado paso a paso 🔌
Después de crear la base de datos y la tabla empleados, el siguiente paso para nuestro CRUD es conectar PHP con MySQL de forma segura y estable.
En este caso de estudio vamos a usar PDO (PHP Data Objects), que es la forma moderna y recomendada para trabajar con bases de datos en PHP.
¿Por qué usar PDO y no mysqli?
PDO tiene varias ventajas importantes:
- Soporta múltiples motores de base de datos.
- Permite consultas preparadas (más seguridad).
- Manejo de errores más limpio.
- Código más ordenado y reutilizable.
Para un CRUD moderno, PDO es la opción correcta.
Archivo de conexión: includes/con.php
Este es el archivo que se encarga de crear la conexión con MySQL.
Luego se incluye en el CRUD principal con:
require __DIR__ . '/includes/con.php';
Código completo de conexión con PDO
Este es el archivo base:
<?php
$host = 'localhost';
$db = 'floopware_casos';
$user = 'usuario';
$pass = 'password';
$charset = 'utf8mb4';
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass, $options);
} catch (\PDOException $e) {
die("Error de conexión: " . $e->getMessage());
}
?>
Explicación línea por línea
Datos de conexión
$host = 'localhost'; $db = 'floopware_casos'; $user = 'usuario'; $pass = 'password'; $charset = 'utf8mb4';
Aquí se definen los datos de acceso:
- host: normalmente
localhost. - db: nombre de la base de datos.
- user: usuario de MySQL.
- pass: contraseña.
- charset:
utf8mb4para soportar todo tipo de caracteres.
Opciones de PDO
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
Estas opciones son muy importantes.
ERRMODE_EXCEPTION
Hace que los errores de base de datos se lancen como excepciones.
Esto permite:
- Detectar errores fácilmente.
- Evitar fallos silenciosos.
FETCH_ASSOC
Hace que los resultados se devuelvan como arreglos asociativos:
Ejemplo:
$empleado['nombres']
En lugar de:
$empleado[1]
Mucho más claro y legible.
Creación de la conexión
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass, $options);
Aquí se crea el objeto $pdo, que será usado en todo el CRUD para:
- SELECT
- INSERT
- UPDATE
- DELETE
Manejo de errores
catch (\PDOException $e) {
die("Error de conexión: " . $e->getMessage());
}
Si ocurre un error:
- Se detiene el script.
- Se muestra el mensaje de error.
En producción, lo ideal es ocultar el mensaje real y mostrar uno genérico.
Cómo se usa esta conexión en el CRUD
Una vez creado con.php, en el archivo principal solo necesitas:
require __DIR__ . '/includes/con.php';
Después de eso, puedes usar $pdo en cualquier consulta:
$stmt = $pdo->query("SELECT * FROM empleados");
$empleados = $stmt->fetchAll();
Consejo importante de seguridad
Nunca hagas esto:
$pdo->query("SELECT * FROM empleados WHERE codigo = '$codigo'");
Eso abre la puerta a inyección SQL.
En su lugar, usa consultas preparadas:
$stmt = $pdo->prepare("SELECT * FROM empleados WHERE codigo = ?");
$stmt->execute([$codigo]);
Tu CRUD ya sigue esta buena práctica.
Estructura mínima del proyecto (recomendado)
Para mantener el código ordenado:
casos-de-estudio/
│
├── crud-caso-de-estudio.php
└── includes/
├── con.php
└── header.php
Esto permite:
- Reutilizar la conexión.
- Mantener el código limpio.
- Evitar duplicación.
Conclusión:
La conexión con PDO es el corazón de tu CRUD.
Con este archivo:
- Centralizas la conexión.
- Manejas errores correctamente.
- Preparas el proyecto para consultas seguras.
En el siguiente paso, comenzaremos con la primera operación real del CRUD:
➡️ Crear empleados (INSERT) con validación y control de duplicados
Post relacionados:
- Cómo crear un CRUD completo con PHP y MySQL (PDO) + Bootstrap (caso real)
- Qué es PDO en PHP y por qué deberías usarlo siempre