5.4.35 mysql_hex_string()
unsigned long
mysql_hex_string(char *to,
const char *from,
unsigned long length)
Описание
Эта функция создаёт корректную строку SQL для использования в операторе SQL. См. .
Строка в аргументе from закодирована в шестнадцатеричном формате, при этом каждый символ кодируется двумя шестнадцатеричными цифрами. Результат помещается в аргумент to, за которым следует завершающий нулевой байт.
Строка, на которую указывает from, должна иметь длину length байт. Вам необходимо выделить буфер to длиной не менее length*2+1 байт. После возвращения функции mysql_hex_string(), содержимое to представляет собой строку с завершающим нулевым символом. Возвращаемое значение равно длине закодированной строки, не включая завершающий нулевой байт.
Возвращаемое значение можно поместить в оператор SQL, используя либо формат X', либо value'0x. Однако возвращаемое значение не включает valueX'...' или 0x. Вызывающая сторона должна предоставить необходимое из этих значений.
Пример
char query[1000],*end;
end = strmov(query,"INSERT INTO test_table values(");
end = strmov(end,"X'");
end += mysql_hex_string(end,"What is this",12);
end = strmov(end,"',X'");
end += mysql_hex_string(end,"binary data: \0\r\n",16);
end = strmov(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, не включая завершающий нулевой символ.
Ошибки
Нет.
© 2025 Oracle
Licensed under the GPLv2 License.