0
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
和mysql_query
运行非常好。
但mysql_affected_rows
返回值-1。
我不知道哪里出了问题....为什么mysql函数在C++中返回值-1?
C不同于C++ ..请选择其中之一。 – jboockmann
在那里有一个可怕的SQL转义的缺乏,这可能是一个巨大的[SQL注入漏洞](http://bobby-tables.com/)。我经常在C代码中看到这一点。 – tadman
我认为-1对于select查询是正确的,SELECT命令不会影响任何行,所以应该有另一个函数从connect_ptr获取行计数,插入实际上应该返回一个有效的结果,但是您检查行是否为实际插入? – Marco