выполнение запроса MySQL в цикле другого без ошибки синхронизации - PullRequest
2 голосов
/ 19 января 2011

Если у меня есть такой код (неактуальные вещи, такие как инициализация соединения и дескриптор, пропущены):

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 ]

2 голосов
/ 23 января 2011

Я отправил электронное письмо в список рассылки MySQL. По сути, для этого мне нужно иметь два независимых соединения MySQL. Спасибо, Шон Грин (из Oracle).

Объект mysql, который вы используете для своего соединения, может иметь только один активный запрос или результат за один раз. Для работы двух наборов результатов необходимо второе независимое соединение с сервером MySQL

0 голосов
/ 23 января 2011

Реальный вопрос: зачем вам две петли?

Почти всегда эффективнее создать один оператор, который возвращает все, что вы хотите, вместо того, чтобы запускать один оператор на строку из внешнего оператора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...