Cuando empiezas a aprender sobre desarrollo backend, uno de los ejercicios más útiles es crear tu propio CRUD en PHP y MySQL. Esta práctica no solo te permite comprender cómo se comunican PHP y una base de datos MySQL, sino que también te enseña las operaciones más básicas y fundamentales: Crear, Leer, Actualizar y Borrar.
En este artículo te mostraré paso a paso cómo construir un CRUD básico sin usar frameworks, para que entiendas bien la lógica detrás de cada parte del proceso. Y si aún no has leído mis guías de Introducción a PHP o Introducción a MySQL, te recomiendo empezar por ahí para comprender mejor cómo funciona cada tecnología.
¿Qué es un CRUD y por qué es importante en PHP y MySQL?
El término CRUD proviene del inglés y representa las cuatro operaciones básicas que podemos hacer sobre una base de datos:
- Create (Crear): insertar nuevos datos.
- Read (Leer): mostrar datos existentes.
- Update (Actualizar): modificar datos existentes.
- Delete (Eliminar): borrar datos.
Aprender a hacer esto con PHP puro y MySQL es esencial si estás empezando con la programación backend, ya que te ayuda a entender la lógica del flujo de datos y cómo interactuar con una base de datos desde un lenguaje del lado del servidor.
Preparación del entorno para tu CRUD en PHP y MySQL
Antes de escribir código, asegúrate de contar con los siguientes elementos:
- Un servidor local como XAMPP, WAMP o MAMP. Estas herramientas permiten emular un entorno real de servidor en tu ordenador.
- PHP y MySQL instalados. Son imprescindibles para que tu aplicación pueda ejecutar scripts y conectarse con la base de datos.
- Un editor de código como Visual Studio Code, Sublime Text o PHPStorm. Te facilitarán la escritura y organización del proyecto.
- phpMyAdmin o una terminal MySQL para gestionar fácilmente tus bases de datos.
Configura XAMPP o el entorno de tu preferencia, asegúrate de que el servidor Apache y MySQL estén corriendo, y crea una carpeta dentro de htdocs para tu proyecto.
Crear la base de datos y tabla en MySQL
Primero, entra a phpMyAdmin o ejecuta estos comandos desde una terminal conectada a MySQL para crear la base de datos y su tabla:
CREATE DATABASE crud_php;
USE crud_php;
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
Con este esquema básico tendrás una tabla llamada usuarios con tres campos: un ID auto incremental, un nombre y un email, todos obligatorios.
Conectar PHP con MySQL desde cero
Crea un archivo llamado conexion.php. Este archivo se encargará de gestionar la conexión con la base de datos:
<?php
$host = 'localhost';
$usuario = 'root';
$password = '';
$bd = 'crud_php';
$conn = new mysqli($host, $usuario, $password, $bd);
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
?>
Esta conexión usa la clase mysqli y debe incluirse en cada archivo que necesite acceso a la base de datos. Si la conexión falla, el script se detiene con un mensaje de error.
Crear registros con PHP (INSERT)
Archivo: crear.php
Este archivo permite a los usuarios insertar datos nuevos en la base de datos a través de un formulario HTML.
<?php
include 'conexion.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$sql = "INSERT INTO usuarios (nombre, email) VALUES ('$nombre', '$email')";
$conn->query($sql);
header("Location: listar.php");
exit();
}
?>
<form method="POST">
Nombre: <input type="text" name="nombre" required><br>
Email: <input type="email" name="email" required><br>
<input type="submit" value="Guardar">
</form>
Este formulario envía los datos a sí mismo (crear.php), y si todo es correcto, se ejecuta una consulta SQL para insertarlos. Luego redirige automáticamente a la página que lista los registros.
Leer registros desde la base de datos (SELECT)
Archivo: listar.php
Este script muestra todos los usuarios registrados, con opciones para editar o eliminar cada uno de ellos.
<?php
include 'conexion.php';
$resultado = $conn->query("SELECT * FROM usuarios");
while ($row = $resultado->fetch_assoc()) {
echo $row['id'] . " - " . $row['nombre'] . " - " . $row['email'];
echo " <a href='editar.php?id=" . $row['id'] . "'>Editar</a> ";
echo " <a href='eliminar.php?id=" . $row['id'] . "'>Eliminar</a><br>";
}
?>
La función fetch_assoc() permite recorrer todos los resultados y mostrarlos en pantalla. También se crean enlaces a las funciones de editar y eliminar.
Actualizar registros en PHP (UPDATE)
Archivo: editar.php
Este archivo permite modificar los datos de un usuario específico. Se cargan sus datos actuales en un formulario, y al enviarlo, se actualizan en la base de datos.
<?php
include 'conexion.php';
$id = $_GET['id'];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$sql = "UPDATE usuarios SET nombre='$nombre', email='$email' WHERE id=$id";
$conn->query($sql);
header("Location: listar.php");
exit();
}
$resultado = $conn->query("SELECT * FROM usuarios WHERE id=$id");
$row = $resultado->fetch_assoc();
?>
<form method="POST">
Nombre: <input type="text" name="nombre" value="<?php echo $row['nombre']; ?>" required><br>
Email: <input type="email" name="email" value="<?php echo $row['email']; ?>" required><br>
<input type="submit" value="Actualizar">
</form>
Este archivo combina lectura (para precargar los datos) y actualización (para guardar los nuevos valores). Todo queda controlado en una sola vista.
Eliminar registros (DELETE)
Archivo: eliminar.php
Este script elimina de forma directa un registro basándose en su ID.
<?php
include 'conexion.php';
$id = $_GET['id'];
$sql = "DELETE FROM usuarios WHERE id=$id";
$conn->query($sql);
header("Location: listar.php");
exit();
?>
El código es simple, pero funcional: captura el id vía GET, ejecuta la sentencia SQL y redirige de nuevo al listado. Recuerda que en entornos reales es recomendable añadir confirmaciones.
Consejos finales para tu CRUD en PHP y MySQL
- Valida y escapa los datos: Evita vulnerabilidades como SQL Injection usando funciones como
mysqli_real_escape_string()o consultas preparadas. - Organiza tu código en carpetas (
includes,controllers,views) para facilitar el mantenimiento. - Prueba cada operación CRUD por separado para detectar errores.
- Haz backups de tu base de datos antes de experimentar con modificaciones.
Con esta guía básica puedes montar tu primer CRUD en PHP y MySQL sin frameworks, algo esencial para sentar bases sólidas en desarrollo web backend. Es una excelente manera de reforzar tus conocimientos antes de pasar a frameworks como Laravel o trabajar con APIs.
Además, si te interesa profundizar más, puedes revisar también mis artículos anteriores sobre introducción a PHP y introducción a MySQL, donde explico cómo funcionan estos lenguajes desde cero.
¿Te animas a programar tu propio CRUD?





