[英]Why mysql function returned value -1 in c++?
bool MySql_Register(const char* id, const char* pw) {
MYSQL* connect_ptr;
connect_ptr = mysql_init(NULL);
if(!mysql_real_connect(connect_ptr, HOST, USER, PW, NAME, 3306, NULL, 0)) {
fprintf(stderr, "%s ",mysql_error(connect_ptr));
exit(1);
}
char sql[256] = {0};
sprintf(sql, "select * from user where id='%s'", id);
mysql_query(connect_ptr, sql);
int len = mysql_affected_rows(connect_ptr);
if(len == 1)
return PK_ID_OVERLAP;
sprintf(sql, "insert into user (id, pw) values ('%s', '%s')", id, pw);
mysql_query(connect_ptr, sql);
len = mysql_affected_rows(connect_ptr);
if(len == 1)
return true;
else
return false;
}
mysql_connect
and mysql_query
running is very well. mysql_connect
和mysql_query
运行非常好。
but mysql_affected_rows
returned value -1. 但是
mysql_affected_rows
返回值-1。
I don't know where is the problem.... 我不知道问题出在哪里...
From the documentation : 从文档中 :
-1 indicates that the query returned an error or that, for a SELECT query, mysql_affected_rows() was called prior to calling mysql_store_result()
-1表示查询返回错误,或者对于SELECT查询,在调用mysql_store_result()之前先调用mysql_affected_rows()。
Moreover, I suggest you to use prepared statements instead of sprintf
to avoid SQL injections. 此外,我建议您使用准备好的语句而不是
sprintf
以避免SQL注入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.