unsigned long mysql_hex_string(char *to, const char *from, unsigned long length)
説明
この関数は、SQL ステートメントで使用できる正当な SQL 文字列を作成するために使われます。セクション9.1.1「文字列リテラル」を参照してください。
from
内の文字列は、各文字が 2 桁の 16 進数としてエンコードされた 16 進形式にエンコードされます。結果は to
に置かれ、終端の NULL バイトが付加されます。
from
によって指示される文字列は、length
バイトの長さである必要があります。to
バッファーを少なくとも length*2+1
バイト長になるように割り当てる必要があります。mysql_hex_string()
が戻ると、to
の内容は NULL 終端文字列になっています。戻り値は、終端の NULL 文字を含まない、エンコードされた文字列の長さです。
戻り値は 0x
または value
X'
形式を使用して、SQL ステートメントに配置できます。ただし、戻り値には、value
'0x
または X'...'
は含まれません。呼び出し元は、要求されたものをなんでも提供する必要があります。
例
char query[1000],*end;
end = strmov(query,"INSERT INTO test_table values(");
end = strmov(end,"0x");
end += mysql_hex_string(end,"What is this",12);
end = strmov(end,",0x");
end += mysql_hex_string(end,"binary data: \0\r\n",16);
*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 へのポインタを返します。
戻り値
to
に置かれた、終端の NULL 文字を含まない値の長さ。
エラー
なし。