# Главная
# О библиотеке

# Выбор дистрибутива
преимущества Linux/UNIX | основные дистрибутивы | серверный Linux | BSD | LiveCDs | прочее

# Установка и удаление программ
общие вопросы | каталоги софта | специальные случаи

# Настройка и работа
установка, загрузчики | настройка Linux | консоль | файловые системы | процессы | шеллы, русификация, коммандеры | виртуальные машины, эмуляторы

# X Window и оконные менеджеры
настройка X Window | GNOME | KDE | IceWM и др.

# Работа с текстами
редакторы | офис | шрифты, кодировки и русификация | преобразования текстовых файлов | LaTeX, SGML и др. | словари

# Графика
GIMP | фото | обработка изображений | форматы графических файлов

# Сети, администрирование
общие вопросы | Dialup & PPP | брандмауэры | маршрутизация | работа в Windows-сетях | веб-серверы | Apache | прокси-серверы | сетевая печать | прочее

# Программирование
GCC & GNU make | программирование в UNIX | графические библиотеки | Tcl | Perl | PHP | Java & C# | СУБД | CVS | прочее

# Ядро
# Мультимедиа
# Интернет
# Почта
# Безопасность
# Железо
# Разное

# Linux HowTo (как сделать)
# Книги и руководства
# Материалы на английском языке


MySQL The World's Most Popular Open Source Database # Online shop | Site map |  
CompanyProductsSupport & ConsultingTraining & CertificationDownloadsDocumentation
  BooksArticlesMailing ListsPresentationsOther Sites  
Search the MySQL manual:
MySQL Manual
  • 8 Интерфейсы для MySQL
    • 8.4 Интерфейс C для MySQL
      • 8.4.3 Описание функций интерфейса C
        • 8.4.3.1 mysql_affected_rows()
        • 8.4.3.6 mysql_change_user()
        • 8.4.3.11 mysql_character_set_name()
        • 8.4.3.15 mysql_close()
        • 8.4.3.19 mysql_connect()
        • 8.4.3.23 mysql_create_db()
        • 8.4.3.28 mysql_data_seek()
        • 8.4.3.32 mysql_debug()
        • 8.4.3.37 mysql_drop_db()
        • 8.4.3.42 mysql_dump_debug_info()
        • 8.4.3.46 mysql_eof()
        • 8.4.3.51 mysql_errno()
        • 8.4.3.55 mysql_error()
        • 8.4.3.59 mysql_escape_string()
        • 8.4.3.60 mysql_fetch_field()
        • 8.4.3.65 mysql_fetch_field_direct()
        • 8.4.3.70 mysql_fetch_fields()
        • 8.4.3.75 mysql_fetch_lengths()
        • 8.4.3.80 mysql_fetch_row()
        • 8.4.3.85 mysql_field_count()
        • 8.4.3.90 mysql_field_seek()
        • 8.4.3.94 mysql_field_tell()
        • 8.4.3.98 mysql_free_result()
        • 8.4.3.102 mysql_get_client_info()
        • 8.4.3.106 mysql_get_host_info()
        • 8.4.3.110 mysql_get_proto_info()
        • 8.4.3.114 mysql_get_server_info()
        • 8.4.3.118 mysql_info()
        • 8.4.3.122 mysql_init()
        • 8.4.3.126 mysql_insert_id()
        • 8.4.3.130 mysql_kill()
        • 8.4.3.134 mysql_list_dbs()
        • 8.4.3.138 mysql_list_fields()
        • 8.4.3.142 mysql_list_processes()
        • 8.4.3.146 mysql_list_tables()
        • 8.4.3.150 mysql_num_fields()
        • 8.4.3.155 mysql_num_rows()
        • 8.4.3.159 mysql_options()
        • 8.4.3.163 mysql_ping()
        • 8.4.3.167 mysql_query()
        • 8.4.3.171 mysql_real_connect()
        • 8.4.3.176 mysql_real_escape_string()
        • 8.4.3.181 mysql_real_query()
        • 8.4.3.185 mysql_reload()
        • 8.4.3.189 mysql_row_seek()
        • 8.4.3.193 mysql_row_tell()
        • 8.4.3.197 mysql_select_db()
        • 8.4.3.201 mysql_shutdown()
        • 8.4.3.205 mysql_stat()
        • 8.4.3.209 mysql_store_result()
        • 8.4.3.213 mysql_thread_id()
        • 8.4.3.217 mysql_use_result()

Buy this Reference Manual in softcover from Barnes & Noble!

MySQL Reference Manual
Previous / Next / Up / Table of Contents

8.4.3.150 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)

8.4.3.151 Описание

Возвращает количество столбцов в результирующем наборе.

Следует отметить, что можно получить искомое количество столбцов с помощью указателя или на результирующий набор, или на дескриптор соединения. Дескриптор соединения необходимо использовать, если функции 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?.

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

Беззнаковое целое число, представляющее количество полей в результирующем наборе.

8.4.3.153 Ошибки

Нет.

8.4.3.154 Пример

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). Это может случиться, только если что-нибудь происходило не так.

User Comments

Add your own comment.

Top / Previous / Next / Up / Table of Contents
# MySQL.com home | Site map | Contact us | Press | Jobs | Privacy policy | Trademark info | © 1995-2003 MySQL AB. All rights reserved.