mysql_real_escape_string()
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. Leia "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 "Literais: Como Gravar Strings e Numerais"). (O MariaDB 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.