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

# Выбор дистрибутива
преимущества 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.85 mysql_field_count()

unsigned int mysql_field_count(MYSQL *mysql)

При использовании более ранней, чем 3.22.24, версии MySQL необходимо вместо этого выражения использовать следующее: unsigned int mysql_num_fields(MYSQL *mysql).

8.4.3.86 Описание

Возвращает количество столбцов для последнего запроса в данном соединении.

Обычно эту функцию используют в случае, когда функция mysql_store_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.87 Возвращаемые значения

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

8.4.3.88 Ошибки

Нет.

8.4.3.89 Пример

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_field_count(&mysql) == 0)
		{
			// запрос не возвращает данные
			// (запрос не был вида SELECT)
			num_rows = mysql_affected_rows(&mysql);
		}
		else // mysql_store_result() должна была вернуть данные
		{
			fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
		}
	}
}

Альтернатива состоит в замене вызова функции mysql_field_count(&mysql) вызовом функции mysql_errno(&mysql). В этом случае можно проверить, была ли данная команда вида SELECT, непосредственно по ошибке от mysql_store_result(), а не делать логический вывод по величине функции mysql_field_count().

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.