我使用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);
}在此之前,不会再提出进一步的请求。只连接到成功的数据库。
发布于 2019-06-02 17:18:23
如果mysql_fetch_row调用失败,您有可能无法释放MYSQL_RES,从而导致后续调用失败。
在从函数返回之前对结果执行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);https://stackoverflow.com/questions/56413509
复制相似问题