Spec-Zone .ru
спецификации, руководства, описания, API
|
unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned
long length)
Отметьте это mysql
должно быть допустимое, открытое соединение. Это необходимо,
потому что выход зависит от набора символов в использовании сервером.
Эта функция используется, чтобы создать юридическую строку SQL, которую можно использовать в SQL-операторе. См. Раздел 9.1.1, "Строковые литералы".
Строка в from
кодируется к оставленной строке SQL, принимая во внимание текущий
набор символов соединения. Результат помещается в to
и завершающийся нулевой байт
добавляется. Закодированные символы"\
",
"'
", ""
", NUL
(ASCII 0),"\n
", "\r
", и Control+Z. Строго говоря MySQL требует только, чтобы
наклонной черты влево и символа кавычки, используемого, чтобы заключить строку в кавычки в запросе, оставили. mysql_real_escape_string()
заключает другие символы в кавычки, чтобы сделать
их легче читать в файлах журнала. Для сравнения см. правила заключения в кавычки для литеральных строк и QUOTE()
Функция SQL в
Разделе 9.1.1,
"Строковых литералах", и Разделе 12.5, "Строковых
функциях".
Строка, которой указывают from
должен быть length
байты долго. Следует выделить to
буфер, чтобы быть, по крайней мере, length*2+1
байты долго. (В худшем случае каждый символ, возможно, должен быть
закодирован как использование двух байтов, и Вы нуждаетесь в комнате для завершающегося нулевого байта.), Когда
mysql_real_escape_string()
возвраты, содержание to
завершенная нулем строка. Возвращаемое значение является
длиной закодированной строки, не включая завершающийся нулевой символ.
Если Вы должны изменить набор символов соединения, используйте mysql_set_character_set()
функционируйте вместо того, чтобы выполнить a SET NAMES
(или SET CHARACTER SET
) оператор. mysql_set_character_set()
работы как SET NAMES
но также и влияет на набор символов, используемый mysql_real_escape_string()
, который SET NAMES
не
делает.
char query[1000],*end;end = strmov(query,"INSERT INTO test_table values(");*end++ = '\'';end += mysql_real_escape_string(&mysql, end,"What is this",12);*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));}
strmov()
функция, используемая в примере, включается в libmysqlclient
библиотека и работы как strcpy()
но возвращает указатель на завершающийся нуль
первого параметра.
Длина значения, помещенного в to
, не включая завершающийся нулевой символ.
Ни один.