|
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, не включая завершающийся нулевой символ.
Ни один.