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
¿Tienes dudas o sugerencias? ¡Déjalas en los comentarios!