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:
<?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 datosbaseDeDatos
: 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.
<?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¶
<?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 paraborrar
. Cada uno de esos botones hará la correspondiente función dependiendo delid
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.
- 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
-
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.
-
Siglas del popular videojuego League of Legends ↩