如何在没有mysql_free_result(res)的情况下在C中运行查询


while ((row = mysql_fetch_row(res)) != NULL) {
    sprintf(statement, "DELETE FROM `outgoing` WHERE `outgoing`.`id`=%s", row[0]);
    if (mysql_query(conn, statement)) {
        fprintf(stderr, "%sn", mysql_error(conn));    
    }
}

我收到Commands out of sync; you can't run this command now错误

您可能使用mysql_use_result()函数从MySQL数据库获取结果。在这种情况下,当调用 mysql_fetch_row() 时,行将逐个发送到客户端。在读取所有行之前,数据库句柄被"锁定":

使用 mysql_use_result() 时,必须执行mysql_fetch_row() 直到返回 NULL 值,否则,未提取的行是 作为下一个查询的结果集的一部分返回。C 接口 给出错误Commands out of sync; you can't run this command now 如果你忘记这样做!

尝试mysql_store_result()作为替换。该函数一次读取所有行。

正确的陈述是:

sprintf(statement, "DELETE FROM outgoing WHERE outgoing.id='%s'", row[0]);

注意%s周围的正确引号,并注意其他内容不需要引号,因为它们是名称,而不是值。

相关内容

  • 没有找到相关文章

最新更新