Documentación offline PHP master

mysql_real_escape_string

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

mysql_real_escape_string

Escapa caracteres especiales en una cadena para su uso en una sentencia SQL

[!WARNING] Esta extensión estaba obsoleta en PHP 5.5.0, y fue eliminada en PHP 7.0.0. En su lugar, se puede utilizar la extensión MySQLi o la extensión PDO_MySQL. Ver también MySQL: elegir una API de la guía. Alternativas a esta función:

mysqli_real_escape_string

PDO::quote

Descripción#

mysql_real_escape_string(string $unescaped_string, [resource $link_identifier]): string
```php

Escapa caracteres especiales en la cadena dada por `unescaped_string`, teniendo en cuenta el conjunto de caracteres en uso de la conexión, para que sea seguro usarla en `mysql_query`. Si se van a insertar datos binarios, se ha de usar esta función.

`mysql_real_escape_string` llama a la función mysql_real_escape_string de la biblioteca de MySQL, la cual antepone barras invertidas a los siguientes caracteres: `\x00`, `\n`, `\r`, `\`, `'`, `"` y `\x1a`.

Esta función siempre debe usarse (con pocas excepciones) para hacer seguros los datos antes de enviar una consulta a MySQL.

> [!CAUTION]
> El conjunto de caracteres debe ser establecido o bien a nivel del servidor, o bien con la función `mysql_set_charset` de la API para que afecte a `mysql_real_escape_string`. Véase la sección sobre los conceptos de [conjuntos de caracters](#mysqlinfo.concepts.charset) para más información.

## Parámetros

`unescaped_string`  
La cadena a escapar.

`link_identifier`  
La conexión MySQL. Si no se especifica, se utilizará la última conexión abierta con la función `mysql_connect`. Si no se encuentra una conexión de este tipo, la función intentará abrir una conexión, como si la función `mysql_connect` hubiera sido llamada sin argumento. Si no se encuentra o establece una conexión, se generará una alerta de nivel `E_WARNING`.

## Valores devueltos

Devuelve la cadena escapada, o `false` en caso de error.

## Errores/Excepciones

Ejecutar esta función sin una conexión de MySQL presente también emitirá errores de nivel `E_WARNING` de PHP. Solo se ha de ejecutar con una conexión de MySQL válida presente.

## Ejemplos

Ejemplo sencillo de `mysql_real_escape_string`
`mysql_real_escape_string` requiere una conexión

Este ejemplo muestra lo que sucede si no hay presente una conexión de MySQL al invocar a esta función.
Resultado del ejemplo anterior es similar a:

    Warning: mysql_real_escape_string(): No such file or directory in /this/test/script.php on line 5
    Warning: mysql_real_escape_string(): A link to the server could not be established in /this/test/script.php on line 5

    bool(false)
    string(41) "SELECT * FROM actors WHERE last_name = ''"

Un ejemplo de ataque de inyección de SQL

```php

La consulta enviada a MySQL:

SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''

Esto permitiría a alguien acceder a una sesión sin una contraseña válida.

Notas#

[!NOTE] Se requiere una conexión a MySQL antes de usar mysql_real_escape_string, si no, se generará un error de nivel E_WARNING, y se devolverá false. Si link_identifier no está definido, se usará la última conexión a MySQL.

[!NOTE] Si esta función no se utiliza para escapar los datos, la consulta es vulnerable a Ataques de inyección SQL.

[!NOTE] mysql_real_escape_string no escapa % ni _. Estos son comodines en MySQL si se combinan con LIKE, GRANT, o REVOKE.

Véase también#

mysql_set_charset

mysql_client_encoding