Saltar a contenido

MySQLi

PHP hace uso de esta extensión mejorada para poder comunicarse con las bases de datos, ya sean MySQL (4.1 o superior) o MariaDB.

Cualquier consulta que queramos hacer a una base de datos necesitaremos hacer uso de la extensión mysqli.

Veamos cómo conectarnos con una base de datos a través del código PHP:

pruebasMsyQLi.php
<?php
    // "SERVIDOR", "USUARIO", "CONTRASEÑA", "BASE DE DATOS"
    $conexion = mysqli_connect("d939ebf6a741","tuUsuario","1234","pruebas");

    // COMPROBAMOS LA CONEXIÓN
    if(mysqli_connect_error()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit();
    }

    echo "<h1>Bienvenid@ a MySQL !!</h1>";
?>
  • servidor: El servidor donde se encuentra la base de datos que queremos usar suele ser localhost, pero en nuestro caso, al utilizar Docker será el nombre de la imagen mysql:8.0 que aparece al dejar el ratón encima en el Visual Studio Code

  • usuarioDB: El usuario de la base de datos

  • passwordDB: La contraseña para ese usuario de la base de datos
  • baseDeDatos: Nombre de la base de datos que queramos usar

Recuperando datos de una BD

Ahora que ya sabemos cómo conectarnos a una base de datos alojada en nuestro servidor, lo que necesitamos saber es cómo recuperar datos almacenados en la base de datos.

Durante la instalación de la imagen de Docker, se ha creado una tabla llamada pruebas que contiene varios registros de distintas personas.

Vamos a recuperar esos datos para ver de qué forma se hace con PHP.

pruebasMsyQLi.php
<?php

    $conexion = mysqli_connect("d939ebf6a741", "lupa", "1234", "pruebas");

    // COMPROBAMOS LA CONEXIÓN
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit();
    }

    // CONSULTA A LA BASE DE DATOS
    $consulta = "SELECT * FROM `Person`";
    $listaUsuarios = mysqli_query($conexion, $consulta);

    // COMPROBAMOS SI EL SERVIDOR NOS HA DEVUELTO RESULTADOS
    if($listaUsuarios) {

        // RECORREMOS CADA RESULTADO QUE NOS DEVUELVE EL SERVIDOR
        foreach ($listaUsuarios as $usuario) {
            echo "
                $usuario[id]
                $usuario[name]
                <br>
            ";
        }
    }
?>

Si todo ha salido bien, por pantalla verás el siguiente listado

1 William
2 Marc
3 John
4 Antonio Moreno

Flujo de trabajo

Definir los parámetros de la cadena de conexión

Antes de realizar la conexión, es necesario definir los parámetros de la cadena de conexión, que incluyen el nombre del servidor, el nombre de usuario, la contraseña y el nombre de la base de datos. Estos parámetros se utilizan para establecer la conexión con el servidor MySQL.

Realizar la conexión

Una vez que se han definido los parámetros de la cadena de conexión, se puede establecer la conexión con el servidor MySQL utilizando la función mysqli_connect() en PHP.

Comprobar errores usando excepciones

Es importante manejar los posibles errores que puedan ocurrir durante la conexión a la base de datos. En este ejemplo, se utiliza un bloque try...catch para capturar cualquier excepción que pueda ser lanzada durante la conexión y mostrar un mensaje de error apropiado.

Cerrar la conexión

Una vez que hayamos terminado de realizar todas las operaciones necesarias en la base de datos, es importante cerrar la conexión para liberar los recursos del servidor MySQL y mejorar el rendimiento.

Ejemplo

pruebasMsyQLi.php
<?php
$servername = "localhost";
$username = "usuario";
$password = "contraseña";
$database = "basededatos";

try {
    $conn = mysqli_connect($servername, $username, $password, $database);
    if (!$conn) {
        throw new Exception("Error al conectar a la base de datos: " . mysqli_connect_error());
    } else {
        echo "Conexión establecida correctamente";
    }
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}

// Realizar acciones pertinentes

mysqli_close($conn);
?>

Actividades

  • 📝 AC 610. (RA6 / CE6b CE6c/ IC1 / 3p) - Rellena la tabla campeon con, al menos 5 registros, con los datos que tú quieras o si lo prefieres, puedes basarte en la página oficial del juego.

    Usa el código

    Guarda el siguiente contenido en un archivo llamado lol.sql:

    -- Crear la base de datos
    CREATE DATABASE lol CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    USE lol;
    
    -- Crear la tabla 'campeon'
    CREATE TABLE campeon (
        id INT AUTO_INCREMENT PRIMARY KEY,
        nombre VARCHAR(100) NOT NULL,
        rol VARCHAR(50) NOT NULL,
        dificultad INT,
        descripcion TEXT
    );
    
    -- Insertar algunos campeones de ejemplo
    INSERT INTO campeon (nombre, rol, dificultad, descripcion) VALUES
    ('Ahri', 'Mago', 3, 'Campeona ágil con habilidades de daño a distancia.'),
    ('Garen', 'Luchador', 1, 'Campeón resistente con habilidades cuerpo a cuerpo.'),
    ('Lee Sin', 'Asesino', 4, 'Campeón versátil con gran movilidad.'),
    ('Lux', 'Mago', 2, 'Campeona con control de zonas y gran alcance.');
    
  • 📝 AC 611. (RA6 / CE6b CE6c CE6d/ IC1 / 3p) - Crea una aplicación donde se listen todos los campeones del LOL1 que has metido en tu base de datos.

  • 🔬 AP 612. (RA6 / CE6b CE6c CE6d / IC1 / 5p) - Modifica el archivo creado en AC 611 pero pon al lado de cada uno de los campeones listados un botón para editar y otro para borrar. Cada uno de esos botones hará la correspondiente función dependiendo del id del campeón seleccionado.

    • Al pinchar en editar, el usuario será redirigido a un archivo donde mostrará un formulario con los campos rellenos por los datos del campeón seleccionado. Al darle al botón de guardar los datos se guardarán en la base de datos y el usuario será redirigido a la lista de campeones para poder ver los cambios.
    • Al pinchar en borrar, el usuario será preguntado a través de un mensaje de JavaScript (prompt) si está seguro de que quiere borrar al campeón seleccionado. En el mensaje de confirmación debe aparecer el nombre del campeón seleccionado. Si el usuario pincha en Aceptar el campeón será eliminado de la base de datos y el usuario será redirigido nuevamente al listado de campeones para comprobar que, efectivamente dicho campeón se ha eliminado de la lista.
  • 🧪 PR 613. (RA6 / CE6b CE6c CE6d/ IC2 / 5p) - Realiza una aplicación que te permita recuperar los datos del e-commerce. Para ello deberás mostrar en una tabla los productos que tiene y a su lado el botón de añadir al carrito. Además, tienes que dar la posibilidad de ver tu carrito y de finalizar el pedido. Todo tiene que quedar reflejado en la base de datos que creaste en PR 609.

    Recordatorio

    Si durante el proceso te das cuenta que necesitas modificar tu base de datos, hazla. Puede que durante su diseño no tuvieras en cuenta ciertos aspectos que ahora te hacen falta, si lo haces documéntalo.


  1. Siglas del popular videojuego League of Legends