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_num_fields()
unsigned int mysql_num_fields(MYSQL_RES *result)
или
unsigned int mysql_num_fields(MYSQL *mysql)
Вторая форма не работает на версии MySQL 3.22.24 или более новой. Вместо аргумента в параметре MYSQL*
необходимо использовать выражение unsigned int mysql_field_count(MYSQL *mysql)
Возвращает количество столбцов в результирующем наборе.
Следует отметить, что можно получить искомое количество столбцов с помощью указателя или на результирующий набор, или на дескриптор соединения. Дескриптор соединения необходимо использовать, если функции mysql_store_result()
или mysql_use_result()
возвратили NULL
(и, следовательно, отсутствует указатель результирующего набора). В этом случае можно вызвать функцию mysql_field_count()
для определения, может ли функция mysql_store_result()
выдать непустой результат. Это дает возможность данной клиентской программе выполнить соответствующее действие без уточнения, был ли данный запрос командой вида SELECT
(или похожей на SELECT
). В приведенном ниже примере иллюстрируется, как это можно сделать.
See section 8.4.6.1 Почему после успешных возвратов функции mysql_query()
функция mysql_store_result()
иногда возвращает NULL
?.
Беззнаковое целое число, представляющее количество полей в результирующем наборе.
Нет.
MYSQL_RES *result; unsigned int num_fields; unsigned int num_rows; if (mysql_query(&mysql,query_string)) { // ошибка } else // запрос выполнен, обработка возвращенных им данных { result = mysql_store_result(&mysql); if (result) // содержит строки { num_fields = mysql_num_fields(result); // извлечение строк, затем вызов mysql_free_result(result) } else // mysql_store_result()не вернула ничего; может ли что-либо вернуть? { if (mysql_errno(&mysql)) { fprintf(stderr, "Error: %s\n", mysql_error(&mysql)); } else if (mysql_field_count(&mysql) == 0) { // запрос не возвращает данные // (запрос не был вида SELECT) num_rows = mysql_affected_rows(&mysql); } } }
Альтернатива (если известно, что данный запрос должен вернуть результирующий набор) состоит в замене вызова функции mysql_errno(&mysql)
на проверку, равна ли 0 функция mysql_field_count(&mysql)
. Это может случиться, только если что-нибудь происходило не так.
Add your own comment.