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_SYNC
CR_OUT_OF_MEMORY
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Add your own comment.