mysql中想更新一个用户的密码,但该16位密码中包含数值为128的字符,插入操作失败,
uint8 psw[16] = {128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128};
在调用mysql_real_query前用mysql_real_escape_string对psw进行了转换,但还是失败,
貌似mysql_real_escape_string不能对数值为128的字符串进行处理?
想请问,如果密码中包含数值为128,该如何插入?
uint8 psw[16] = {128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128};
在调用mysql_real_query前用mysql_real_escape_string对psw进行了转换,但还是失败,
貌似mysql_real_escape_string不能对数值为128的字符串进行处理?
想请问,如果密码中包含数值为128,该如何插入?
MYSQL_RES *result =NULL;
char ch_query[1024];
unsigned char temp[16] = {128,128,128,128,49,128,49,49,49,49,49,49,49,49,49,49};
char psw[100];
int len = mysql_real_escape_string(&mysql,psw,(char*)temp,16);
char *pQuery;
pQuery = ch_query;
pQuery += sprintf(pQuery, "update userslist");
pQuery += sprintf(pQuery, " set Psw = \"");
memcpy((void*)pQuery, (void*)psw,len);
pQuery+=len;
pQuery += sprintf(pQuery, "\"");
pQuery += sprintf(pQuery, " where UserID = %u",1);
if (mysql_real_query(&mysql,ch_query,pQuery - ch_query)!=0)
{
printf("%s\n",mysql_error(&mysql));
printf("失败\n");
}
else
{
printf("成功\n");
}
代码如上所示,
输出如下:
Incorrect string value: '\x80\x80\x80\x801\x80...' for column 'Psw' at row 1
失败
Press any key to continue