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
rootcomo 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
mysqlipara 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
INSERTpara 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
$usernamey$passwordcoincidan 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->errorpara 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.

