mysql.h


Función mysql_real_escape_string()

unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length)

El parámetro mysql debe ser una conexión abierta válida. Esto es necesario ya que el escapado depende del conjunto de caracteres en uso por el servidor.

Esta función se usa para crear una cadena SQL legal que se puede usar en una sentencia SQL.

La cadena en from se codifica como una cadena SQL escapada, teniendo en cuenta el conjunto de caracteres actual de la conexión. El resultado se coloca en to y se añade un carácter nulo terminador. Los caracteres codificados son NUL (ASCII 0), '\n', '\r', '\', ''', '"' y Control-Z. (Estrictamente hablando, MySQL sólo requiere que se escapen los caracteres de barra invertida y el carácter de comilla usado para entrecomillar la cadena. Esta función entrecomilla los otros caracteres para que sean más fáciles de leer en ficheros de diario.)

La cadena apuntada por from debe tener long bytes de longitud. Además, se debe crear un buffer to con al menos length*2+1 bytes de longitud. (En el peor caso, cada carácter necesitará ser codificado usando dos bytes, y se necesita espacio para el carácter terminador nulo.) Cuando mysql_real_escape_string() regresa, el contenido de to será una cadena terminada en nulo. El valor de retorno es la longitud de la cadena codificada, sin incluir el carácter nulo terminador.

Ejemplo

char query[1000],*end;

end = strmov(query,"INSERT INTO test_table values(");
*end++ = '\'';
end += mysql_real_escape_string(&mysql, end,"Qué es esto",11);
*end++ = '\'';
*end++ = ',';
*end++ = '\'';
end += mysql_real_escape_string(&mysql, end,"datos binarios: \0\r\n",19);
*end++ = '\'';
*end++ = ')';

if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))
{
   fprintf(stderr, "Fallo al insertar fila, Error: %s\n",
           mysql_error(&mysql));
}

La función strmov() usada en el ejemplo está incluida en la biblioteca mysqlclient y trabaja igual que strcpy() pero devuelve un puntero al terminador nulo del primer parámetros.

Valores de retorno

La longitud del valor colocado en to, sin incluir el carácter nulo terminador.

Errores

Ninguno.