0
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, "%s\n", mysql_error(conn));    
    }
}

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

4

2 回答 2

0

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

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

尝试mysql_store_result()作为替代品。该函数一次获取所有行。

于 2016-03-24T11:58:21.293 回答
-1

正确的说法是:

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

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

于 2016-03-24T09:45:45.390 回答