Conectar a una base de datos MySQL

En este artículo explicaremos cómo conectar una base de datos MySQL para verificar los datos enviados desde un formulario con la información de nuestros usuarios registrados. En los artículos anteriores hemos preparado la base de nuestro sistema de login: el formulario y la validación de datos. El siguiente paso es conectar nuestro proyecto con la base de datos MySQL, donde compararemos las credenciales introducidas con las almacenadas.

Aunque PHP ofrece varias formas de conectarse a una base de datos (como PDO o mysqli en modo orientado a objetos) en este artículo utilizaremos mysqli en modo procedural, una opción más directa y ligera cuando sabemos que el proyecto trabajará exclusivamente con MySQL.

Este artículo forma parte de la serie Sistema de login con PHP, donde se explica paso a paso cómo construir un sistema completo de login de usuarios usando PHP y MySQL.

El archivo de conexión a MySQL

PHP permite varias formas de trabajar y conectar con una base de datos como MySQL:

  • PDO: más versátil, soporta múltiples motores de base de datos (MySQL, SQLite, PostgreSQL, etc.).
  • mysqli (orientado a objetos): similar a PDO pero específico de MySQL.
  • mysqli (procedural): sintaxis simple y muy clara, ideal cuando se busca rendimiento y legibilidad en proyectos exclusivamente MySQL.

En este artículo explicaremos la forma procedural de mysqli, ya que es rápida y fácil de integrar en proyectos existentes, lo cual es suficiente para el objetivo didáctico de este artículo. La mejor práctica consiste en separar la configuración de la conexión a MySQL en un archivo independiente, por ejemplo, conexion.php. En este archivo se guardarán los datos que pide el servidor para conectar a la base de datos MySQL: host, usuario, contraseña y nombre de la base de datos, como se muestra en el siguiente ejemplo.

<?php
// Parámetros de conexión
$DB_HOST = "localhost";
$DB_USER = "root";
$DB_PASS = "";
$DB_NAME = "login_usuarios";

// Crear conexión con MySQL
$conn = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

// Comprobar si la conexión fue exitosa
if (!$conn) {
    error_log("MySQL Error: " . mysqli_connect_error());
    die("Error de conexión ...");
}

// Si todo va bien
// echo "Conexión exitosa a la base de datos";
?>

Cuando trabajamos con una base de datos como MySQL es esencial detectar errores rápidamente. El uso de mysqli_connect_error() nos permite saber si algo falla en la conexión. Por ejemplo: credenciales incorrectas o base de datos inexistente. Algunas recomendaciones sobre este aspecto son:

  • Evita mostrar mensajes técnicos al usuario final: Los errores deben ser registrados, no mostrados en pantalla. Si ocurre un error, se muestra un mensaje genérico y se guarda el error real en el log del servidor mediante error_log(), sin revelar información sensible.
  • Centraliza la conexión en un solo archivo: Esto facilita el mantenimiento y evita inconsistencias si cambias las credenciales.

En este punto, el archivo conexion.php puede incluirse en cualquier script que necesite conectar con una base de datos MySQL mediante include() o include_once() para evitar incluir el archivo varias veces.

include("conexion.php");

Consulta a la base de datos MySQL

Para comprobar que la conexión funciona correctamente, podemos conectar a nuestra base de datos MySQL y ejecutar una consulta básica a una tabla llamada usuarios con un código como el siguiente:

<?php
include("conexion.php");

// Consulta simple: obtener todos los usuarios
$sql = "SELECT id, nombre, email FROM usuarios";
$resultado = mysqli_query($conn, $sql);

// Verificamos si hay resultados
$registros = [];
while ($fila = mysqli_fetch_assoc($resultado)) {
  $registros[] = $fila;
  echo "ID: " . $fila["id"] . " - Usuario: " . htmlspecialchars($fila["nombre"]) . " - Email: " . htmlspecialchars($fila["email"]) . "<br>";
}

// Si no hubo registros, mostramos mensaje
if (count($registros) === 0) {
    echo "No se encontraron usuarios.";
}

// Cerramos la conexión
mysqli_close($conn);
?>

Este código ejecuta las siguientes acciones:

  • include() Incluye el archivo que establece la conexión con la base de datos ($conn).
  • $sql Define la consulta SQL que selecciona los campos id, nombre y email de la tabla usuarios.
  • $resultado Ejecuta la consulta en la base de datos usando la conexión $conn y recibe un resultado que se puede recorrer fila por fila.
  • $registros Inicializa un array vacío para almacenar todas las filas devueltas por la consulta.
  • while recorre cada fila del resultado y mysqli_fetch_assoc() devuelve la fila como un array asociativo o false si no hay más filas.
    • Dentro del bucle:
      • Se añade la fila al array $registros.
      • Se muestran los datos por pantalla usando echo.
      • htmlspecialchars() asegura que cualquier carácter especial no se interprete como HTML/JS.
  • if comprueba si el array $registros está vacío, en caso afirmativo muestra un mensaje indicando que no se encontraron usuarios.
  • Cierra la conexión con la base de datos.

Conectar a una base de datos MySQL

En este artículo hemos explicado cómo conectar a una base de datos MySQL para obtener el registro de usuarios. Con esta estructura ya tenemos una conexión estable y controlada a nuestra base de datos MySQL usando PHP. Esta base será esencial para los próximos pasos: el registro de usuarios y la validación del login con los datos enviados desde un formulario.

En el siguiente artículo construiremos la tabla de usuarios y aprenderemos cómo registrar usuarios de forma segura, encriptando las contraseñas con password_hash() y evitando inyecciones SQL con consultas preparadas.

¡ Espero que este artículo sea de vuestro interés !

Deja un comentario