mysql_affected_rows()mysql_change_user()mysql_character_set_name()mysql_close()mysql_connect()mysql_create_db()mysql_data_seek()mysql_debug()mysql_drop_db()mysql_dump_debug_info()mysql_eof()mysql_errno()mysql_error()mysql_escape_string()mysql_fetch_field()mysql_fetch_field_direct()mysql_fetch_fields()mysql_fetch_lengths()mysql_fetch_row()mysql_field_count()mysql_field_seek()mysql_field_tell()mysql_free_result()mysql_get_client_info()mysql_get_host_info()mysql_get_proto_info()mysql_get_server_info()mysql_info()mysql_init()mysql_insert_id()mysql_kill()mysql_list_dbs()mysql_list_fields()mysql_list_processes()mysql_list_tables()mysql_num_fields()mysql_num_rows()mysql_options()mysql_ping()mysql_query()mysql_real_connect()mysql_real_escape_string()mysql_real_query()mysql_reload()mysql_row_seek()mysql_row_tell()mysql_select_db()mysql_shutdown()mysql_stat()mysql_store_result()mysql_thread_id()mysql_use_result()
Buy this Reference Manual in softcover from Barnes & Noble!
mysql_use_result()
MYSQL_RES *mysql_use_result(MYSQL *mysql)
Функцию 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() сразу же после окончания действий с результирующим набором.
Результирующая структура MYSQL_RES с результатами. NULL, если произошла ошибка.
CR_COMMANDS_OUT_OF_SYNCCR_OUT_OF_MEMORYCR_SERVER_GONE_ERRORCR_SERVER_LOSTCR_UNKNOWN_ERRORAdd your own comment.