Данная структура представляет дескриптор соединения с базой данных.
Используется почти во всех функциях MySQL.
MYSQL_RES
Эта структура содержит результат запроса, возвратившего строки (SELECT,
SHOW, DESCRIBE, EXPLAIN). Возвращенная из запроса информация далее в этом
разделе называется результирующим набором данных.
MYSQL_ROW
Является ``типобезопасным'' представлением данных одной строки.
В настоящее время этот тип реализован как массив строк с фиксированным
количеством байтов (их нельзя трактовать как строки с нулевым символом в
конце, если величины полей могут содержать двоичные данные, поскольку они
могут содержать ноль байтов). Строки можно получить вызовом функции
mysql_fetch_row().
MYSQL_FIELD
Данная структура содержит информацию об отдельном поле таблицы: имя поля,
тип и его размер. Элементы данной структуры детально описаны в этом
разделе ниже. Для каждого поля можно получить структуру MYSQL_FIELD,
последовательно вызывая функцию mysql_fetch_field(). Величины полей не
являются частью данной структуры, они содержатся в структуре MYSQL_ROW.
MYSQL_FIELD_OFFSET
``Типобезопасное'' представление позиции поля в списке полей MySQL.
(используется функцией mysql_field_seek()). Позиции представляют собой
номера полей внутри строки, причем нумерация начинается с нуля.
my_ulonglong
Данный тип используется для возврата количества строк, а также в функциях
mysql_affected_rows(), mysql_num_rows() и mysql_insert_id(). Этот тип
обеспечивает диапазон изменений величин от 0 до 1.84e19. Может не работать
в некоторых системах при выводе величины типа my_ulonglong. Для вывода
подобной величины следует преобразовать ее в тип unsigned long и
использовать формат %lu. Пример:
Структура MYSQL_FIELD содержит следующие перечисленные ниже элементы:
char * name
Имя данного поля, заданное строкой с нулевым символом в конце.
char * table
Имя таблицы, содержащей это поле, если оно невычисляемое. Для полей,
получаемых в результате вычислений, величина table представляет собой
пустую строку.
char * def
Значение по умолчанию этого поля, заданное строкой с нулевым символом в
конце. Задается только при использовании функции mysql_list_fields().
enum enum_field_types type
Тип данного поля. Величина type может быть одной из следующих:
Тип величины
Описание типа
FIELD_TYPE_TINY
Поле TINYINT
FIELD_TYPE_SHORT
Поле SMALLINT
FIELD_TYPE_LONG
Поле INTEGER
FIELD_TYPE_INT24
Поле MEDIUMINT
FIELD_TYPE_LONGLONG
Поле BIGINT
FIELD_TYPE_DECIMAL
Поле DECIMAL или NUMERIC
FIELD_TYPE_FLOAT
Поле FLOAT
FIELD_TYPE_DOUBLE
Поле DOUBLE или REAL
FIELD_TYPE_TIMESTAMP
Поле TIMESTAMP
FIELD_TYPE_DATE
Поле DATE
FIELD_TYPE_TIME
Поле TIME
FIELD_TYPE_DATETIME
Поле DATETIME
FIELD_TYPE_YEAR
Поле YEAR
FIELD_TYPE_STRING
Строка поля (CHAR или VARCHAR)
FIELD_TYPE_BLOB
BLOB или TEXT поле (используется max_length для определения максимальной длинны)
FIELD_TYPE_SET
Поле типа SET
FIELD_TYPE_ENUM
Поле типа ENUM
FIELD_TYPE_NULL
Поле типа NULL
FIELD_TYPE_CHAR
Не рекомендуется; лучше использовать FIELD_TYPE_TINY
Можно использовать макрос IS_NUM() для проверки, является ли тип поля
числовым. В макросе IS_NUM() следует указать величину type и, если поле
имеет числовой тип, будет возвращено значение TRUE:
if (IS_NUM(field->type))
printf("Field is numeric\n");
unsigned int length
Размер данного поля в том виде, в каком он указан в определении таблицы.
unsigned int max_length
Максимальный размер данного поля в результирующем наборе данных (длина
самой большой величины поля для строк в текущем результирующем наборе
данных). При использовании mysql_store_result() или mysql_list_fields()
данная переменная содержит максимальную длину для данного поля. При
использовании mysql_use_result() значение этой переменной равно нулю.
unsigned int flags
Различные двоичные флаги для данного поля. Величина flags может иметь ноль
или больше двоичных значений следующего набора флагов:
Значение флага
описание флага
NOT_NULL_FLAG
Поле не может содержать значение NULL
PRI_KEY_FLAG
Поле является частью первичного ключа
UNIQUE_KEY_FLAG
Поле является частью уникального ключа
MULTIPLE_KEY_FLAG
Поле является частью не уникального ключа
UNSIGNED_FLAG
Поле имеет атрибут UNSIGNED
ZEROFILL_FLAG
Поле имеет атрибут ZEROFILL
BINARY_FLAG
Поле имеет атрибут BINARY
AUTO_INCREMENT_FLAG
Поле имеет атрибут AUTO_INCREMENT
ENUM_FLAG
Поле имеет тип ENUM (не рекомендуется)
SET_FLAG
Поле имеет тип SET (не рекомендуется)
BLOB_FLAG
Поле имеет тип BLOB или TEXT (не рекомендуется)
TIMESTAMP_FLAG
Поле имеет тип TIMESTAMP (не рекомендуется)
Использование флагов BLOB_FLAG, ENUM_FLAG, SET_FLAG и TIMESTAMP_FLAG не
рекомендуется, поскольку они указывают скорее тип поля, чем атрибут этого
типа. Вместо этого более предпочтительно определять тип поля описанным
выше способом field->type в отношении полей FIELD_TYPE_BLOB,
FIELD_TYPE_ENUM, FIELD_TYPE_SET или FIELD_TYPE_TIMESTAMP. Следующий пример
иллюстрирует типичное использование величины flags:
if (field->flags & NOT_NULL_FLAG)
printf("Field can't be null\n");
Можно использовать следующие возможности макросов для определения булевого
значения величины flags:
Статус флага
Описание
IS_NOT_NULL(flags)
Возвращает TRUE, если данное поле определено как NOT NULL
IS_PRI_KEY(flags)
Возвращает TRUE, если данное поле является первичным ключом
IS_BLOB(flags)
Возвращает TRUE, если данное поле имеет тип BLOB или TEXT (не рекомендуется; более предпочтительно field->type)
unsigned int decimals
Возвращает число десятичных знаков для числовых полей.