obj是一个结构体对象
struct blob
{
int a;
int b;
}obj = {1,2};blobtest 是表的名字;表有两个属性,第一个是integer,第二个是blob
unsigned short current_length = 0;
const char * head= "INSERT INTO blobtest VALUES(6,";
const char * tail= ")"; char sql[128] = {0};//最终的sql语句
memcpy(sql, head, strlen(head));
current_length += strlen(head); mysql_real_escape_string(handle, sql+current_length, (char *)&obj, sizeof(obj));
current_length += sizeof(obj); memcpy(sql+current_length, tail, strlen(tail));
current_length += strlen(tail); sql[current_length] = '\0'; mysql_real_query(handle, sql, current_length);
struct blob
{
int a;
int b;
}obj = {1,2};blobtest 是表的名字;表有两个属性,第一个是integer,第二个是blob
unsigned short current_length = 0;
const char * head= "INSERT INTO blobtest VALUES(6,";
const char * tail= ")"; char sql[128] = {0};//最终的sql语句
memcpy(sql, head, strlen(head));
current_length += strlen(head); mysql_real_escape_string(handle, sql+current_length, (char *)&obj, sizeof(obj));
current_length += sizeof(obj); memcpy(sql+current_length, tail, strlen(tail));
current_length += strlen(tail); sql[current_length] = '\0'; mysql_real_query(handle, sql, current_length);
我改了一下:
int len = mysql_real_escape_string(handle, sql+current_length, (char *)&obj, sizeof(obj));
current_length += len;gdb调试发现sql语句是:INSERT INTO blobtest VALUES(6,\001\\0\\0\\0bcde)
const char * tail= "')";
我发帖时故意去掉了
我的结构体obj是
struct
{
int a;
char b; char c; char d; char e;
} obj = {1, 'b','c','d','e'};
语句是这样的“INSERT INTO blobtest VALUES(6,\001\\0\\0\\0bcde);”