如果我有这样的代码(无关的事情,如初始化连接和句柄省略):
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
如何从一个选择查询中提取行时运行另一个选择查询?
答案 0 :(得分:2)
我发了一封电子邮件到MySQL邮件列表。基本上,为了能够做到这一点,我需要有两个独立的MySQL连接。谢谢,Shawn Green(来自Oracle)。
您用于连接的mysql对象一次只能有一个活动查询或结果。要使两组结果有效,您需要与MySQL服务器建立第二个独立连接
答案 1 :(得分:-1)
真正的问题是:为什么你需要两个循环?
创建一个返回所需内容的语句几乎总是更有效,而不是从外部语句中每行触发一个语句。