Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




Справочное руководство по MySQL

8.4.3.217 mysql_use_result()

    8.4.3.217 mysql_use_result()

    MYSQL_RES *mysql_use_result(MYSQL *mysql)

    8.4.3.218 Описание

    Функцию mysql_store_result() или mysql_use_result() необходимо вызывать после каждого выполненного запроса, извлекающего данные (SELECT, SHOW, DESCRIBE, EXPLAIN).

    Функция mysql_use_result() инициализирует извлечение результирующего набора, но фактически не производит чтение в клиенте подобно тому, как это делает функция mysql_store_result(). Вместо этого каждая строка должна извлекаться индивидуально посредством вызова функции mysql_fetch_row(). При этом методе результат запроса читается непосредственно на сервере без промежуточного хранения его во временной таблице или локальном буфере, что быстрее и требует намного меньше памяти, чем использование функции mysql_store_result(). Клиент будет выделять память только для текущей строки и буфер связи может расти до величины max_allowed_packet байтов.

    С другой стороны, функцию mysql_use_result() нельзя использовать, если выполняется много операций по обработке каждой строки на клиентской стороне, или если вывод делается на терминал, на котором пользователь может нажать ^S (остановить вывод).

    Это будет ограничивать работу сервера и будет мешать другим потокам в обновлении таблиц, из которых выбираются данные.

    При использовании mysql_use_result() необходимо выполнять mysql_fetch_row(), пока не возвратится величина NULL, в противном случае невыбранные строки данного запроса будут возвращены как часть результирующего набора для следующего запроса. Если вы забыли сделать это, то интерфейс 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() сразу же после окончания действий с результирующим набором.

    8.4.3.219 Возвращаемые значения

    Результирующая структура MYSQL_RES с результатами. NULL, если произошла ошибка.

    8.4.3.220 Ошибки

    CR_COMMANDS_OUT_OF_SYNC
    Команды были выполнены в ненадлежащем порядке.
    CR_OUT_OF_MEMORY
    Нехватка памяти.
    CR_SERVER_GONE_ERROR
    Сервер MySQL неожиданно завершил работу.
    CR_SERVER_LOST
    Соединение с сервером прервалось в процессе данного запроса.
    CR_UNKNOWN_ERROR
    Произошла неизвестная ошибка.

Поиск по документации:



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |