mysql\u stmt\u fetch()是否返回100?

mysql\u stmt\u fetch()是否返回100?,mysql,c,prepared-statement,mysql-5.6,Mysql,C,Prepared Statement,Mysql 5.6,我正在尝试在c服务中执行一个准备好的语句,在调用mysql_stmt_fetch之前,一切似乎都很好,因为它返回100,我在mysql文档中找不到这样做的原因 示例代码: int Check_Unique(char *sumin) { //DATABASE INFORMATION MYSQL db; MYSQL_STMT *stmt; MYSQL_BIND param[1],result[1]; char *l_statement; //CONNECTING TO TH

我正在尝试在c服务中执行一个准备好的语句,在调用mysql_stmt_fetch之前,一切似乎都很好,因为它返回100,我在mysql文档中找不到这样做的原因

示例代码:

int Check_Unique(char *sumin)
{
  //DATABASE INFORMATION
  MYSQL db;
  MYSQL_STMT *stmt;
  MYSQL_BIND param[1],result[1];

  char *l_statement;
  //CONNECTING TO THE DATABASE...
  if(mysql_init (&db)==NULL)
  {
    if(gDEBUG==1){printf("\nFailed to connect to db\n");}
    return(5);
  }
        if(mysql_real_connect(&db,DB_IP,DB_USERNAME,DB_PASSWORD,DB_DATABASE,0,NULL,0) == NULL)
  {
    return(5);
  }

  l_statement = "SELECT used FROM sumplace WHERE sumin = ? LIMIT 1;";
  if(gDEBUG==1){printf("\nSQL: %s\n",l_statement);}

  int result_data = -1;
  unsigned long str_length;
  unsigned long data_length;

  stmt = mysql_stmt_init(&db);
  if(!stmt)
  {
    if(gDEBUG==1){printf("\ninit Failed\n");}
    mysql_close(&db);
    return(-10);
  }
  if(mysql_stmt_prepare(stmt, l_statement, strlen(l_statement)) != 0)
  {
    if(gDEBUG==1){printf("\nstmt_prepare Failed : %s\n", mysql_stmt_error(stmt));}
    mysql_close(&db);
    return(-5);
  }

  memset(param, 0, sizeof(param));
  memset(result, 0, sizeof(result));

  param[0].buffer_type = MYSQL_TYPE_STRING;
  param[0].buffer = (char *)sumin;
  param[0].buffer_length = strlen(sumin);
  param[0].is_null = 0;
  param[0].length = &str_length;

  result[0].buffer_type = MYSQL_TYPE_LONG;
  result[0].buffer = (char *)&result_data;
  result[0].buffer_length = 4;
  result[0].is_null = 0;
  result[0].length = &data_length;

  if(gDEBUG ==1){printf("\n%s\n",(char *)param[0].buffer);}
  if(mysql_stmt_bind_param(stmt, param)) //bind parameters
  {
    if(gDEBUG==1){printf("\nbind_param failed\n");}
    mysql_close(&db);
    return(-10);
  }  
  if(mysql_stmt_bind_result(stmt, result) != 0) //bind results
  {
    if(gDEBUG==1){printf("\nbind_result Failed\n");}
    mysql_close(&db);
    return(-10);
  }
  if(mysql_stmt_execute(stmt) != 0) //execute statement
  {
    if(gDEBUG==1){printf("\nstatement execution Failed\n");}
    mysql_close(&db);
    return(-10);
  }
  if(gDEBUG==1) printf("result_data[%d]\n", result_data);
  int i = mysql_stmt_fetch(stmt);
  if(i == 0) //fetch data from return
  {
    if(gDEBUG==1) printf("Prepared Success result_data[%d]\n", result_data);
    if(result_data == 0)
    {
      if(gDEBUG==1) printf("Sumin Valid!!!\n");
      mysql_stmt_close(stmt);
      mysql_close(&db);
      return(1);
    }
    else if(result_data == 1)
    {
      if(gDEBUG==1) printf("Sumin Invalid!!!\n");
      mysql_stmt_close(stmt);
      mysql_close(&db);
      return(3);
    }
    else
    {
      if(gDEBUG==1) printf("Sumin Invalid!!!\n");
      mysql_stmt_close(stmt);
      mysql_close(&db);
      return(2);
    }
  }
  else
  {
    if(gDEBUG==1){printf("\n%d\n", i);}
    if(gDEBUG==1){printf("\nmysql_stmt_fetch Failed : %s\n", mysql_stmt_error(stmt));}
    if(gDEBUG==1) printf("Prepared Failure/No Results Found\n");
  }

  mysql_stmt_close(stmt);
  mysql_close(&db);
  return(2);
}
示例结果:

SQL: SELECT sumin FROM sumwhere WHERE sumin = ? LIMIT 1; #### result_data[-1] 100 mysql_stmt_fetch Failed : Prepared Failure/No Results Found
我有些同情,因为的文档没有告诉您两个可能返回结果的实际值。但是,请看,with告诉您100意味着什么


这意味着你的搜索没有返回任何结果

谢谢,我将进一步调查: