首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql C API:命令不同步;现在不能运行此命令

Mysql C API:命令不同步;现在不能运行此命令
EN

Stack Overflow用户
提问于 2019-06-02 16:42:56
回答 1查看 86关注 0票数 0

我使用C api mysql,但是,当我连接到数据库时,我遇到一个错误,我选择了所选的项。“命令不同步;现在不能运行此命令”

代码语言:javascript
复制
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);
}

在此之前,不会再提出进一步的请求。只连接到成功的数据库。

EN

回答 1

Stack Overflow用户

发布于 2019-06-02 17:18:23

如果mysql_fetch_row调用失败,您有可能无法释放MYSQL_RES,从而导致后续调用失败。

在从函数返回之前对结果执行free操作。

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56413509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档