¿QUÉ SON LAS CONSULTAS PARAMETRIZADAS EN MYSQL?

Una consulta parametrizada, o prepared statement, es una consulta SQL que utiliza parámetros en lugar de concatenar directamente los valores del usuario. Es una de las mejores prácticas de seguridad en MySQL.
Las consultas SQL donde los valores se envían separados de la estructura de la consulta. En lugar de construir la consulta concatenando strings, se usan marcadores "?" que luego son reemplazados de forma segura por la base de datos.

Ejemplo básico

-- Forma peligrosa (vulnerable)
SELECT * FROM usuarios WHERE correo = 'usuario@email.com';

--Consulta parametrizada (segura)
SELECT * FROM usuarios WHERE correo = ?;

¿Para qué sirven las consultas parametrizadas?

  • Evitar inyecciones SQL, o SQL Injection, uno de los ataques más comunes.
  • Mejorar significativamente la seguridad de la aplicación.
  • Separar claramente los datos de la consulta.
  • Facilitar la reutilización de consultas, consiguiendo un mayor rendimiento).

¿Cómo funcionan las consultas parametrizadas?

  1. La aplicación envía primero la estructura de la consulta con parámetros "?".
  2. MySQL prepara la consulta analizándola y optimizándola.
  3. Luego, la aplicación envía los valores por separado.
  4. MySQL combina ambos de forma segura y ejecuta la consulta.
De esta manera, los datos del usuario se tratan siempre como datos, nunca como parte del código SQL.

Ejemplo práctico en MySQL con Prepared Statements

-- Preparar la consulta
PREPARE stmt FROM 'SELECT * FROM usuarios WHERE correo = ? AND activo = ?';

-- Ejecutar pasando los parámetros
SET @correo = 'juan@example.com';
SET @activo = 1;
EXECUTE stmt USING @correo, @activo;

-- Liberar la consulta preparada
DEALLOCATE PREPARE stmt;
Ejemplo con php