5.4.86 mysql_use_result()
MYSQL_RES *
mysql_use_result(MYSQL *mysql)
Описание
После вызова mysql_real_query() или mysql_query(), для каждого оператора, успешно создающего результат набора, необходимо вызвать mysql_store_result() или mysql_use_result(). Также необходимо вызвать mysql_free_result() после завершения работы с набором результатов.
mysql_use_result() инициирует извлечение набора результатов, но не считывает его в клиентское приложение, как mysql_store_result(). Вместо этого, каждая строка должна извлекаться индивидуально с помощью вызова mysql_fetch_row(). Это считывает результат запроса напрямую с сервера без сохранения его во временной таблице или локальном буфере, что немного быстрее и потребляет меньше памяти, чем mysql_store_result(). Клиент выделяет память только для текущей строки и буфера связи, который может увеличиваться до байтов.
С другой стороны, не следует использовать mysql_use_result() для блокировки чтения, если выполняется много обработки каждой строки на стороне клиента или если вывод отправляется на экран, на котором пользователь может ввести ^S (остановить прокрутку). Это связывает сервер и не позволяет другим потокам обновлять таблицы, из которых извлекаются данные.
При использовании mysql_use_result(), необходимо выполнить mysql_fetch_row() до тех пор, пока не будет возвращено значение NULL. В противном случае необработанные строки возвращаются как часть набора результатов для следующего запроса. API C возвращает ошибку Commands out of
sync; you can't run this command now, если это забыто!
Нельзя использовать mysql_data_seek(), mysql_row_seek(), mysql_row_tell(), mysql_num_rows() или mysql_affected_rows() с результатом, полученным от mysql_use_result(), а также нельзя выполнять другие запросы, пока mysql_use_result() не завершит работу. (Однако, после извлечения всех строк, mysql_num_rows() точно возвращает количество извлеченных строк.)
После завершения работы с набором результатов необходимо вызвать mysql_free_result().
Значения возврата
Структура результата MYSQL_RES. NULL, если произошла ошибка.
Ошибки
mysql_use_result() сбрасывает mysql_error() и mysql_errno(), если успешно выполняется.
-
Команды были выполнены в неправильном порядке.
-
Недостаточно памяти.
-
Сервер MySQL недоступен.
-
Подключение к серверу было потеряно во время запроса.
-
Произошла неизвестная ошибка.
© 2025 Oracle
Licensed under the GPLv2 License.