Buy this Reference Manual in softcover from Barnes & Noble!
MYSQLMYSQL_RESSELECT, SHOW, DESCRIBE, EXPLAIN). Возвращенная из запроса информация далее в этом разделе называется результирующим набором данных.
MYSQL_ROWmysql_fetch_row().
MYSQL_FIELDMYSQL_FIELD, последовательно вызывая функцию mysql_fetch_field(). Величины полей не являются частью данной структуры, они содержатся в структуре MYSQL_ROW.
MYSQL_FIELD_OFFSETmysql_field_seek()). Позиции представляют собой номера полей внутри строки, причем нумерация начинается с нуля.
my_ulonglongmysql_affected_rows(), mysql_num_rows() и mysql_insert_id(). Этот тип обеспечивает диапазон изменений величин от 0 до 1.84e19. Может не работать в некоторых системах при выводе величины типа my_ulonglong. Для вывода подобной величины следует преобразовать ее в тип unsigned long и использовать формат %lu. Пример:
printf (Количество строк: %lu\n", (unsigned long) mysql_num_rows(result));
Структура MYSQL_FIELD содержит следующие перечисленные ниже элементы:
char * namechar * tabletable представляет собой пустую строку.char * defmysql_list_fields().enum enum_field_types typetype может быть одной из следующих:
| Тип величины | Описание типа |
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 lengthunsigned int max_lengthmysql_store_result() или mysql_list_fields() данная переменная содержит максимальную длину для данного поля. При использовании mysql_use_result() значение этой переменной равно нулю.unsigned int flagsflags может иметь ноль или больше двоичных значений следующего набора флагов:
| Значение флага | описание флага |
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 decimalsAdd your own comment.