Tu primer CRUD en PHP y MySQL sin frameworks

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?

Compartir:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tabla de contenidos

Más posts

Categorías

Contáctame

Escríbeme a través del formulario. Estoy encantado de ayudarte con diseño web, contenido visual, redes o cualquier duda.