在另一个循环内运行mysql查询而没有同步错误

时间:2011-01-19 10:19:24

标签: mysql c

如果我有这样的代码(无关的事情,如初始化连接和句柄省略):

MYSQL_RES *res;
MYSQL_ROW row;
mysql_query(mysql, "some select query");
res = mysql_use_result(mysql);
while (row = mysql_fetch_row(res)) {
    MYSQL_RES *res2;
    MYSQL_ROW row2;
    mysql_query(mysql, "some other select query using an id from the first");
    res2 = mysql_use_result(mysql);
    /* ... */
    mysql_free_result(res2);
}
mysql_free_result(res);

每当我运行第二个mysql_query(在循环中)时,我都会收到错误

mysql: 2014: Commands out of sync; you can't run this command now

如何从一个选择查询中提取行时运行另一个选择查询?

2 个答案:

答案 0 :(得分:2)

我发了一封电子邮件到MySQL邮件列表。基本上,为了能够做到这一点,我需要有两个独立的MySQL连接。谢谢,Shawn Green(来自Oracle)。

  

您用于连接的mysql对象一次只能有一个活动查询或结果。要使两组结果有效,您需要与MySQL服务器建立第二个独立连接

答案 1 :(得分:-1)

真正的问题是:为什么你需要两个循环?

创建一个返回所需内容的语句几乎总是更有效,而不是从外部语句中每行触发一个语句。