Bases de datos con PHP
Bienvenido a la penúltima lección de nuestro curso básico de PHP 8. Hoy nos metemos con las bases de datos, el corazón de cualquier aplicación dinámica. Aprenderás a conectar PHP con MySQL, guardar datos, mostrarlos y más. Si ya manejas arrays y gestión de errores, esto es el broche de oro para tus proyectos. Todo va a ser claro, práctico y con ejemplos que te van a flipar. ¡Empecemos!
¿Por qué usar bases de datos con PHP?
Una base de datos es como una biblioteca súper organizada donde guardas y encuentras información rápido. PHP es un experto en trabajar con bases de datos como MySQL, PostgreSQL o SQLite, permitiéndote crear sistemas dinámicos, desde blogs hasta tiendas online. Hoy nos enfocaremos en MySQL, uno de los más populares, para que conectes, insertes y consultes datos como pro.
Preparando el terreno
Antes de conectar PHP con MySQL, necesitas:
- MySQL instalado: Asegúrate de tener XAMPP o un servidor MySQL corriendo.
- Una base de datos: Vamos a crear una llamada
curso_php8
. - Credenciales: Usaremos
root
como usuario y una contraseña (ajusta según tu configuración).
Paso 1: Crear la base de datos
Abre MySQL Workbench, phpMyAdmin o la terminal de MySQL y ejecuta:
CREATE DATABASE curso_php8;
Esto crea la base de datos curso_php8
.
Paso 2: Crear una tabla
Dentro de curso_php8
, crea una tabla alumnos
con esta consulta:
CREATE TABLE alumnos ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(45), edad INT, carrera VARCHAR(200) );
Esto define una tabla con un ID automático y campos para nombre, edad y carrera.
Probando bases de datos en acción
¡Manos a la obra! Crea un archivo base_de_datos.php
en curso_php8
(dentro de C:\xampp\htdocs
) y prueba esto:
Ejemplo 1: Conexión a MySQL
<?php $servername = "localhost"; $username = "root"; $password = ""; // Ajusta si tienes una contraseña $dbname = "curso_php8"; // Crear conexión $conn = new mysqli($servername, $username, $password, $dbname); // Verificar conexión if ($conn->connect_error) { die("Error de conexión: " . $conn->connect_error); } echo "¡Conexión exitosa a MySQL!<br>"; // Cerrar conexión $conn->close(); ?>
Abre http://localhost/curso_php8/base_de_datos.php
. Verás:
¡Conexión exitosa a MySQL!
¿Qué pasó?
- Usamos
mysqli
para conectar con el servidor MySQL. - Verificamos si hubo errores con
connect_error
. - Cerramos la conexión con
close()
para liberar recursos.
Ejemplo 2: Insertar datos
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "curso_php8"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Error de conexión: " . $conn->connect_error); } // Insertar datos $sql = "INSERT INTO alumnos (nombre, edad, carrera) VALUES ('Jesus', 30, 'Programador')"; if ($conn->query($sql) === TRUE) { echo "Datos insertados correctamente<br>"; } else { echo "Error al insertar: " . $conn->error . "<br>"; } $conn->close(); ?>
Resultado:
Datos insertados correctamente
¿Qué pasó?
- Ejecutamos una consulta
INSERT
para añadir un alumno. - Verificamos si funcionó con
$conn->query()
. - Para evitar datos repetidos, ejecuta este código solo una vez o limpia la tabla antes.
Ejemplo 3: Mostrar datos
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "curso_php8"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Error de conexión: " . $conn->connect_error); } // Consultar datos $sql = "SELECT * FROM alumnos"; $result = $conn->query($sql); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "Nombre: " . $row["nombre"] . " | Edad: " . $row["edad"] . " | Carrera: " . $row["carrera"] . "<br>"; } } else { echo "No hay resultados<br>"; } $conn->close(); ?>
Resultado (si insertaste antes):
Nombre: Jesus | Edad: 30 | Carrera: Programador
¿Qué pasó?
- Usamos
SELECT *
para obtener todos los registros. - Recorrimos los resultados con
fetch_assoc()
para mostrarlos. - Si la tabla está vacía, mostramos «No hay resultados».
Ejemplo práctico
Ejemplo: CRUD básico
Creamos un archivo alumnos_crud.php
para conectar, insertar, mostrar, actualizar y eliminar datos:
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "curso_php8"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Error de conexión: " . $conn->connect_error); } // Insertar $sql = "INSERT INTO alumnos (nombre, edad, carrera) VALUES ('Ana López', 20, 'Diseño Gráfico')"; $conn->query($sql); // Mostrar echo "Lista de alumnos:<br>"; $sql = "SELECT * FROM alumnos"; $result = $conn->query($sql); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "ID: " . $row["id"] . " | Nombre: " . $row["nombre"] . " | Edad: " . $row["edad"] . " | Carrera: " . $row["carrera"] . "<br>"; } } // Actualizar $sql = "UPDATE alumnos SET nombre='Ana Gómez', edad=21 WHERE id=2"; if ($conn->query($sql) === TRUE) { echo "Registro actualizado<br>"; } else { echo "Error al actualizar: " . $conn->error . "<br>"; } // Eliminar $sql = "DELETE FROM alumnos WHERE id=1"; if ($conn->query($sql) === TRUE) { echo "Registro eliminado<br>"; } else { echo "Error al eliminar: " . $conn->error . "<br>"; } $conn->close(); ?>
Resultado (depende de los datos):
Lista de alumnos: ID: 1 | Nombre: Jesus | Edad: 30 | Carrera: Programador ID: 2 | Nombre: Ana López | Edad: 20 | Carrera: Diseño Gráfico Registro actualizado Registro eliminado
¿Qué pasó?
- Hicimos un CRUD (Create, Read, Update, Delete) básico.
- Insertamos un alumno, mostramos la lista, actualizamos uno y eliminamos otro.
- Siempre cerramos la conexión para no gastar recursos.
Ejercicios para practicar
¡Ve a curso_php8
y prueba estos retos:
- Actualizar registro
Creaactualizar_alumno.php
:
?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "curso_php8"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Error de conexión: " . $conn->connect_error); } $sql = "UPDATE alumnos SET nombre='Carlos Ruiz', edad=22 WHERE id=2"; if ($conn->query($sql) === TRUE) { echo "Registro actualizado correctamente<br>"; } else { echo "Error al actualizar: " . $conn->error . "<br>"; } $conn->close(); ?>
- Eliminar registro
Creaeliminar_alumno.php
:
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "curso_php8"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Error de conexión: " . $conn->connect_error); } $sql = "DELETE FROM alumnos WHERE id=2"; if ($conn->query($sql) === TRUE) { echo "Registro eliminado correctamente<br>"; } else { echo "Error al eliminar: " . $conn->error . "<br>"; } $conn->close(); ?>
Ejecuta en localhost/curso_php8/
y verifica los cambios en phpMyAdmin.
Consejos para no enredarte
- Verifica credenciales: Asegúrate de que
$username
y$password
coincidan con tu configuración de MySQL. - Cierra conexiones: Usa
$conn->close()
para evitar consumir recursos. - Evita duplicados: Antes de insertar, verifica si el dato ya existe o usa claves únicas.
- Usa consultas preparadas: Para datos de usuarios (como formularios), evita inyecciones SQL con
mysqli_prepare()
. - Debuguea errores: Revisa
$conn->error
para entender qué falló.
¡EL final de curso!
¡Gran trabajo, máquina! Ahora sabes conectar PHP con MySQL, guardar datos, mostrarlos, actualizarlos y eliminarlos como un verdadero pro. asta aqui el final de curso. Si algo no te queda claro, déjame un comentario .
Lo que aprendiste hoy:
- Bases de datos: Conectaste PHP con MySQL como un campeón.
- CRUD básico: Insertaste, mostraste, actualizaste y eliminaste datos.
- Ejemplos vivos: Creaste una tabla de alumnos y jugaste con ella.
- Practicaste: Modificaste y borraste registros como pro.
- Tip del pro: Cierra conexiones y usa consultas preparadas para apps seguras.