5.4.39 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.