gpt4 book ai didi

mysql_stmt_fetch() 返回 100?

转载 作者:行者123 更新时间:2023-11-29 01:54:29 25 4
gpt4 key购买 nike

我正在尝试在 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]100mysql_stmt_fetch Failed : Prepared Failure/No Results Found

最佳答案

我有些同情,因为 mysql_stmt_fetch 的文档不要告诉您两个可能的返回结果的实际值。但是,请参阅 this bug report with 告诉你 100 的意思。

这意味着您的搜索没有返回任何结果(MYSQL_NO_DATA)。

关于mysql_stmt_fetch() 返回 100?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32968476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com