我使用C api mysql,但是,当我连接到数据库时遇到错误,因此我选择了所选项目。 “命令不同步;您现在不能运行此命令”
boolean
check_token(char *token) {
MYSQL_RES *res;
MYSQL_ROW row;
char *pass;
char query[200];
snprintf(query, 200, "SELECT * FROM tokens WHERE token = \"%s\"", token); // SELECT * FROM tokens WHERE token = "84ds4d3d3sd453s"
if (mysql_query(&db, query)) {
fprintf(stderr, "%s\n", mysql_error(&db));
return (FALSE);
}
printf("OK\n");
if (!(res = mysql_store_result(&db))) {
fprintf(stderr, "%s\n", mysql_error(&db));
return (FALSE);
}
if (!(row = mysql_fetch_row(res)))
return (FALSE);
pass = row[1];
printf("Le token est %s\n", pass);
mysql_free_result(res);
return (TRUE);
}
之前没有进一步的请求。只是成功连接到数据库。
答案 0 :(得分:0)
如果MYSQL_RES
呼叫失败,则有可能无法释放mysql_fetch_row
,从而使后续的后续呼叫均失败。
free
从函数返回之前的结果。
if (!(row = mysql_fetch_row(res)))
{
mysql_free_result(res); //Free before returning
return (FALSE);
}
pass = row[1];
printf("Le token est %s\n", pass);
mysql_free_result(res);
return (TRUE);