real_escape_string
En este artículo, discutiremos la función mysqli_real_escape_string() en PHP, la cual se utiliza para escapar caracteres especiales en cadenas que se usarán en consultas SQL.
Introducción a la función mysqli_real_escape_string()
Esta función integrada de PHP escapa caracteres especiales en cadenas destinadas a consultas SQL. Ayuda a prevenir ataques de inyección SQL, los cuales ocurren cuando usuarios maliciosos inyectan código SQL dañino en sentencias ejecutadas por la base de datos.
Cómo usar la función mysqli_real_escape_string()
Usar la función mysqli_real_escape_string() es sencillo. Aquí tienes un ejemplo:
<?php
$con = mysqli_connect('localhost', 'username', 'password', 'database');
if (!$con) {
exit('Could not connect: ' . mysqli_error($con));
}
// Set charset to prevent multi-byte character vulnerabilities
mysqli_set_charset($con, 'utf8mb4');
$name = "John O'Reilly";
$name = mysqli_real_escape_string($con, $name);
$sql = "INSERT INTO customers (name) VALUES ('$name')";
if (!mysqli_query($con, $sql)) {
exit('Error: ' . mysqli_error($con));
}
echo '1 record added';
mysqli_close($con);
?>En este ejemplo, primero establecemos una conexión a una base de datos MySQL usando mysqli_connect(). Luego definimos una variable $name que contiene una comilla simple. Al llamar a mysqli_real_escape_string(), se escapa esa comilla, asegurando que la sentencia SQL se ejecute sin errores de sintaxis. Construimos una consulta INSERT dirigida a la tabla customers, la ejecutamos con mysqli_query() y mostramos un mensaje de éxito.
Nota: Siempre establece el juego de caracteres de la conexión (por ejemplo, mysqli_set_charset($con, 'utf8mb4')) antes de escapar para prevenir vulnerabilidades con caracteres multibyte. Aunque esta función funciona, el desarrollo moderno de PHP recomienda encarecidamente el uso de sentencias preparadas con consultas parametrizadas para una mayor seguridad.
Conclusión
La función mysqli_real_escape_string() sigue siendo una herramienta práctica para escapar caracteres especiales en consultas SQL. Escapar correctamente la entrada del usuario ayuda a mantener tu aplicación segura y tus datos protegidos.
Práctica
¿Qué hace la función PHP mysql_real_escape_string?