Cómo crear un CRUD completo con PHP y MySQL (PDO) + Bootstrap (caso real) 🚀
Si estás aprendiendo desarrollo web, hay un proyecto que te da un salto enorme de nivel en poco tiempo:
crear un CRUD completo.
CRUD significa:
- Create (crear registros)
- Read (listar y buscar)
- Update (editar)
- Delete (eliminar)
En esta serie vamos a construir un CRUD real, funcional y claro, usando:
✅ PHP con PDO (consultas preparadas, más seguro)
✅ MySQL (base de datos clásica y muy usada)
✅ Bootstrap (interfaz bonita y responsive sin sufrir)
✅ Buenas prácticas: validación, mensajes flash, CSRF, escape XSS y más.
Además, este caso de estudio está pensado para que puedas replicar el proyecto en tu máquina y usarlo como base para futuros sistemas (tickets, inventarios, paneles, etc.).
Qué vas a lograr con este caso de estudio
Al terminar la serie, vas a tener:
- Un CRUD completo sobre una tabla real (
empleados) - Formularios para crear y editar
- Listado con buscador
- Botones de acciones (editar/eliminar)
- Conexión segura con PDO
- Validación básica y mensajes claros
- Protección contra acciones maliciosas (CSRF)
- Código organizado y fácil de mantener
En pocas palabras: un mini–proyecto que demuestra que sabes construir aplicaciones web, no solo “hacer scripts”.
Requisitos (muy básicos)
Para seguir este caso de estudio, te basta con:
- PHP 8+ (🔥)
- MySQL/MariaDB
- Un servidor local o Ubuntu + Apache
- Conocimientos básicos de HTML (lo mínimo)
Estructura del proyecto (simple y práctica)
Este CRUD está hecho de forma intencional simple, para que se entienda fácil.
Una estructura típica (como la del caso real) es:
crud-caso-de-estudio.php→ archivo principal del CRUDincludes/→ conexión y header compartido- Bootstrap por CDN (sin instalación)
Índice del “curso” (posts del cluster)
Este post es el mapa principal del caso de estudio.
Aquí se irán enlazando todas las partes.
Parte 1 — Base de datos y tabla empleados
Crear la base de datos y la tabla empleados (SQL explicado)
Si aún no conoces bien MySQL puedes consultar una guia rapida aqui:
Parte 2 — Conexión PDO + estructura mínima del CRUD
Conexión segura con PDO (includes/con.php) y configuración base
Qué veremos:
- DSN correcto con
utf8mb4 ERRMODE_EXCEPTIONFETCH_ASSOC- Buenas prácticas de try/catch
Parte 3 — CREATE (Insert)
Cómo crear empleados: formulario + INSERT con validación y control de duplicados
Qué veremos:
- Validación por longitud (según tu tabla)
- Evitar PK duplicada (
codigo) - Mensajes flash (success/warning)
Parte 4 — READ (Listar + buscar)
Listar empleados + buscador (LIKE) con consultas preparadas
Qué veremos:
- SELECT ordenado
- Búsqueda por varios campos
- Límite de resultados y rendimiento
Parte 5 — UPDATE (Editar)
Editar empleados: modo edición, campo PK bloqueado y UPDATE seguro
Qué veremos:
- Cargar registro con
?edit= - Mantener estado de edición
- UPDATE con parámetros
Parte 6 — DELETE (Eliminar)
Eliminar empleados: confirmación + token CSRF
Qué veremos:
- Confirmación en UI
- Acción destructiva protegida con CSRF
- Mensajes claros al usuario
Parte 7 — Seguridad mínima para CRUDs (sin complicarte)
XSS, CSRF, validación, y consejos anti-trolls para demos públicas
Qué veremos:
htmlspecialcharsal mostrar datos- CSRF en POST y en acciones destructivas
- Limitaciones de inputs
- Tips para evitar spam (sin login)
Parte 8 — Deploy en Ubuntu/Apache (opcional pero recomendado)
Publicar el CRUD en un servidor: rutas, permisos y buenas prácticas
Qué veremos:
- Carpeta pública
/var/www/.../casos-de-estudio/ - Permisos
- Cosas típicas que fallan
Preguntas típicas (mini FAQ)
¿Esto sirve para mi portfolio?
Sí. Un CRUD bien hecho demuestra:
- Conexión a BD
- Lógica de negocio
- Formularios y validación
- Seguridad básica
- UI funcional
¿Se puede convertir en un proyecto más grande?
Totalmente. De aquí puedes evolucionar a:
- Login/roles
- Panel admin
- Paginación real
- Exportar CSV
- API REST
- Subida de archivos (si lo haces con cuidado)
Conclusión:
Este caso de estudio es una guía práctica: aprender haciendo.
Si sigues todas las partes, terminarás con un CRUD sólido, entendiendo cada pieza y con base real para tus próximos proyectos.
📌 Guarda este post como referencia, porque aquí tendrás siempre el índice completo.