27.7.6.35 mysql_hex_string()

unsigned long mysql_hex_string(char *to, const char *from, unsigned long length)

Description

此函数创建一个合法的 SQL 字符串以用于 SQL 语句。参见第 9.1.1 节“字符串 Literals”

from参数中的字符串以十六进制格式编码,每个字符编码为两个十六进制数字。结果放置在to参数中,后跟一个终止的空字节。

from指向的字符串的长度必须为length个字节。您必须将to缓冲区分配为至少length*2+1字节长。 mysql_hex_string()返回时,to的内容是一个以空值结尾的字符串。返回值是编码字符串的长度,不包括终止空字节。

可以使用X'value'0xvalue格式将返回值放入 SQL 语句中。但是,返回值不包含X'...'0x。呼叫者必须提供所需的任何一个。

Example
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(),但返回指向第一个参数的终止 null 的指针。

Return Values

放在to中的编码字符串的长度,不包括终止空字符。

Errors

None.