Conectar PHP con MySQL y prevenir inyecciones SQL (guía 2025)

¿Quieres conectar tu sitio web en PHP con una base de datos MySQL de forma segura? En esta guía aprenderás a usar MySQLi, ejecutar consultas (SELECT, INSERT, UPDATE, DELETE), validar y sanitizar datos, y prevenir ataques de inyección SQL. Todo con código real y buenas prácticas.

Introducción a PHP y conexión básica con MySQL

PHP es el lenguaje del lado del servidor que permite procesar datos y comunicarse con bases de datos. Para conectar con MySQL, usamos la extensión MySQLi.

Conexión a MySQL usando MySQLi

Primero, crea un archivo conexion.php:


                        <?php
                        $servername = "localhost";
                        $username = "root";
                        $password = "";
                        $dbname = "mi_sitio";

                        // Crear conexión
                        $conn = new mysqli($servername, $username, $password, $dbname);

                        // Verificar conexión
                        if ($conn->connect_error) {
                            die("Conexión fallida: " . $conn->connect_error);
                        }
                        echo "Conexión exitosa";
                        ?>
                        

Crear Base de Datos y Tablas

Puedes crear la base de datos desde phpMyAdmin o con código:

$sql = "CREATE DATABASE mi_sitio";
if ($conn->query($sql) === TRUE) {
    echo "Base de datos creada";
}

Consultas SQL: SELECT, INSERT, UPDATE, DELETE

Ejemplos de operaciones comunes:

  • INSERT: $sql = "INSERT INTO usuarios (nombre, email) VALUES ('Juan', 'juan@email.com')";
  • SELECT: $sql = "SELECT id, nombre, email FROM usuarios";
  • UPDATE: $sql = "UPDATE usuarios SET nombre='Pedro' WHERE id=1";
  • DELETE: $sql = "DELETE FROM usuarios WHERE id=1";

Validación y Sanitización de Datos

Nunca confíes en los datos del usuario. Siempre valida y limpia:

// Validar que no esté vacío
if (empty($_POST['email'])) {
    die("El correo es obligatorio");
}

// Sanitizar entrada
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);

¿Qué es una Inyección SQL?

Un atacante puede manipular formularios para ejecutar código SQL malicioso. Ejemplo:

' OR '1'='1

Si no validas, podría acceder a toda tu base de datos.

Cómo Prevenir la Inyección SQL

Usa sentencias preparadas (prepared statements):

$stmt = $conn->prepare("INSERT INTO usuarios (nombre, email) VALUES (?, ?)");
$stmt->bind_param("ss", $nombre, $email);
$stmt->execute();

Esto evita que el código SQL sea interpretado como comando.

Errores Comunes y Cómo Evitarlos

  • No cerrar conexiones: usa $conn->close();
  • Mostrar errores en producción: nunca uses die() en vivo
  • Olvidar validar: siempre valida antes de insertar

Depuración en PHP

Para ver el contenido de variables, usa:

var_dump($variable); // Inspección detallada
print_r($array); // Salida más legible

O envía datos a la consola del navegador:

echo "";

¿Qué sigue después de PHP y MySQL?

Este es el cuarto paso del desarrollo full-stack. En el siguiente módulo, aprenderás a comunicar el frontend con el backend usando AJAX y APIs RESTful.

Volver a la Guía Full-Stack → Ver Módulo 3: JavaScript y jQuery →

¿Quieres la versión completa del libro?

Esta guía es una versión resumida del libro "Programación Full-Stack", que incluye:

  • ✅ Todos los ejercicios resueltos paso a paso
  • ✅ Códigos listos para copiar y probar
  • ✅ Explicaciones profundas de seguridad y buenas prácticas
  • ✅ Acceso a actualizaciones futuras
Comprar en Amazon →

¿Tienes dudas o sugerencias? ¡Déjalas en los comentarios!