Inicio » Blog » Bases de datos con PHP

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:

  1. MySQL instalado: Asegúrate de tener XAMPP o un servidor MySQL corriendo.
  2. Una base de datos: Vamos a crear una llamada curso_php8.
  3. 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:

  1. Actualizar registro
    Crea actualizar_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();
   ?>
  1. Eliminar registro
    Crea eliminar_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.

Deja un comentario

Scroll al inicio