unsigned long mysql_real_escape_string(MYSQL *mysql,
char *to, const char *from, unsigned long length)
Описание
Эта функция используется для создания допустимой SQL- строки, которую можно использовать в команде SQL. See Раздел 6.1.1.1, «Cтроки».
Строка из секции from
кодируется в экранированную
SQL-строку, принимая во внимание
текущую кодировку данного
соединения. Результат помещается
в секцию to с добавлением
концевого нулевого байта.
Кодируются следующие символы:
NUL (ASCII 0), '\n',
'\r', ‘\’,
‘'’,
‘"’ и Ctrl-Z (see
Раздел 6.1.1, «Литералы: представление строк и чисел»). (Строго говоря, MySQL
требует только чтобы обратная
косая черта и кавычки,
используемые для квотинга строк в
запросе, были проэкранированы.
Эта функция экранирует и другие
символы, делая их более легкими
для чтения в журнальных файлах.)
Строка, указанная в секции
from, должна быть длиной
length байтов. Необходимо
выделить для секции to буфер
величиной по меньшей мере
length*2+1 байтов (в
наихудшем случае каждый символ
может потребовать кодировки с
использованием двух байтов и,
кроме того, необходимо место для
концевого нулевого байта). При
возврате функции
mysql_real_escape_string()
содержимое секции to будет
представлять собой строку с
нулевым окончанием. Возвращаемая
величина представляет собой
длину данной кодированной строки,
не включая концевой нулевой
символ.
Пример
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));
}
Функция strmov(),
использованная в этом примере,
присутствует в библиотеке
mysqlclient и работает
подобно функции strcpy(),
но возвращает указатель на
концевой нуль первого параметра.
Возвращаемые значения
Длина величины, помещенной в секции to, не включая концевой нулевой символ.
Ошибки
Нет.
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.
© 1995-2005 MySQL AB. All rights reserved.
