unsigned long mysql_real_escape_string(MYSQL *mysql,
char *to, const char *from, unsigned long length)
Descrição
A função é usada para criar um string SQL válida que você pode usar em uma instrução SQL. See Secção 6.1.1.1, “Strings”.
A string em from
é codificada para uma
string SQL com escape, levando em conta o conjunto de
caracteres atual da conexãon. O resultado é colocada em
to
e uma byte nulo de terminção é
adcionado. Caracteres codificados são NUL
(ASCII 0), '\n
', '\r
',
‘\
’,
‘'
’,
‘"
’ e Control-Z (see
Secção 6.1.1, “Literais: Como Gravar Strings e Numerais”). (O MySQL precisa que apenas a
barra invertida e as aspas utilizadas para citar a consulta
sejam escapadas. Esta função coloca os outros caracteres
entre aspas para torná-lo mais fácil de ser lido em arquivos
log.)
A string apontada por from
deve ter o
tamanho de length
bytes. Você deve alocar
o buffer to
para o tamanho de pelo menos
length*2+1
bytes. (No pior caso, cada
caracter pode precisar de ser codificado como se utilizasse
dois bytes, e você preciria de espaço para o byte null de
terminação.) Quando
mysql_real_escape_string()
retornar, o
conteúdo de to
será uma string terminada
em null. O valor é o tamanho da string codificada. não
incluindo o caracter nulo usado para terminar a string.
Exemplo
char query[1000],*end; end = strmov(query,"INSERT INTO test_table values("); *end++ = '\''; end += mysql_real_escape_string(&mysql, end,"What's this",11); *end++ = '\''; *end++ = ','; *end++ = '\''; end += mysql_real_escape_string(&mysql, end,"binary data: \0\r\n",16); *end++ = '\''; *end++ = ')'; if (mysql_real_query(&mysql,query,(unsigned int) (end - query))) { fprintf(stderr, "Failed to insert row, Error: %s\n", mysql_error(&mysql)); }
A função strmov()
usada no exemplo está
incluída na biblioteca mysqlclient
e
funciona como strcpy()
mas retorna um
ponteiro para null de terminação do primeiro parâmetro.
Valor Retornado
O tamanho do valor colocado em to
, não
incluindo o caracter null de terminação.
Erros
Nenhum.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.