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
周围的正确引号,并注意其他内容不需要引号,因为它们是名称,而不是值。