为什么mysql函数在c ++中返回值-1?

时间:2016-04-27 07:57:20

标签: c++ mysql c database

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_connectmysql_query正常运行。
mysql_affected_rows返回值-1。
我不知道问题出在哪里......

1 个答案:

答案 0 :(得分:1)

来自documentation

  

-1表示查询返回错误,或者对于SELECT查询,在调用之前调用了mysql_affected_rows()   了mysql_store_result()

此外,我建议您使用预准备语句而不是sprintf来避免SQL注入。