mysql_fetch_fields()
MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)
Описание
Возвращает массив всех структур MYSQL_FIELD для результирующего набора данных. Каждая структура предоставляет определение данного поля в одном столбце результирующего набора.
Возвращаемые значения
Массив структур MYSQL_FIELD для всех столбцов результирующего набора.
Ошибки
Нет.
Пример
unsigned int num_fields; unsigned int i; MYSQL_FIELD *fields;
num_fields = mysql_num_fields(result); fields = mysql_fetch_fields(result); for(i = 0; i < num_fields; i++) { printf("Field %u is %s\n", i, fields[i].name); }
mysql_fetch_lengths()
unsigned long *mysql_fetch_lengths(MYSQL_RES *result)
Описание
Возвращает длины столбцов текущей строки внутри результирующего набора данных. Если вы планируете копировать величины столбцов, то эта информация о длинах полезна также для оптимизации, поскольку помогает избежать вызова функции strlen() . Кроме того, если результирующий набор содержит двоичные данные, то необходимо использовать рассматриваемую функцию для определения размера этих данных, поскольку функция strlen() возвращает некорректные результаты для поля, содержащего символы NULL .
Искомая длина для пустых столбцов и для столбцов, содержащих величины NULL , равна нулю. Чтобы увидеть, как следует различать эти два случая, см. описание для функции mysql_fetch_row() .
Возвращаемые значения
Массив беззнаковых целых чисел, представляющий собой размер каждого столбца (не включая конечные нулевые символы). NULL если произошла ошибка.
Ошибки
Функция mysql_fetch_lengths() действительна только для данной текущей строки в результирующем наборе данных. Она возвращает NULL , если ее вызов происходит до вызова функции mysql_fetch_row() или после извлечения всех строк в результате.
Пример
MYSQL_ROW row; unsigned long *lengths; unsigned int num_fields; unsigned int i;
row = mysql_fetch_row(result); if (row) { num_fields = mysql_num_fields(result); lengths = mysql_fetch_lengths(result); for(i = 0; i < num_fields; i++) { printf("Column %u is %lu bytes in length.\n", i, lengths[i]); } }
mysql_fetch_row()
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
Описание
Извлекает следующую строку в результирующем наборе данных. При использовании после функции mysql_store_result() функция mysql_fetch_row() возвращает NULL , если больше не осталось строк для извлечения. При использовании после функции mysql_use_result() функция mysql_fetch_row() возвращает NULL , если больше не осталось строк для извлечения или если произошла ошибка.
Количество величин в данной строке задается в mysql_num_fields(result) . Если параметр row содержит возвращенные значения из вызова функции mysql_fetch_row() , то указатели на эти величины имеют значения от code>row[0] до row[mysql_num_fields(result)-1] . Величины NULL в данной строке отмечаются указателями NULL .
Размеры полей в данной строке можно получить, вызывая функцию mysql_fetch_lengths() . Пустые поля и поля, содержащие NULL , в обоих случаях имеют длину 0; их можно различить, проверив указатель для данной величины поля. Если указатель равен NULL , то данное поле содержит NULL ; в противном случае, данное поле является пустым.
Возвращаемые значения
Структура MYSQL_ROW для следующей строки. NULL , если нет больше строк для извлечения или произошла ошибка.
Ошибки
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
Пример
MYSQL_ROW row; unsigned int num_fields; unsigned int i;
num_fields = mysql_num_fields(result); while ((row = mysql_fetch_row(result))) { unsigned long *lengths; lengths = mysql_fetch_lengths(result); for(i = 0; i < num_fields; i++) { printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL"); } printf("\n"); }
mysql_field_count()
unsigned int mysql_field_count(MYSQL *mysql)
При использовании более ранней, чем 3.22.24, версии MySQL необходимо вместо этого выражения использовать следующее: unsigned int mysql_num_fields(MYSQL *mysql) .
Описание
Возвращает количество столбцов для последнего запроса в данном соединении.
Обычно эту функцию используют в случае, когда функция mysql_store_result() возвращает NULL (и, следовательно, нет ни одного указателя для результирующего набора). В этом случае можно вызвать функцию mysql_field_count() для определения, может ли функция mysql_store_result() выдать непустой результат. Это дает возможность данной клиентской программе выполнить соответствующее действие без уточнения, был ли данный запрос командой вида SELECT (или похожей на SELECT ). Приведенный ниже пример иллюстрирует, как это можно сделать.
См. раздел Почему после успешных возвратов функции 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_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() .
mysql_field_seek()
MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Описание
Устанавливает курсор поля в заданную позицию. Дальнейший вызов функции mysql_fetch_field() будет извлекать определение данного поля в столбце, ассоциированном с данной позицией курсора.
Для поиска начала строки необходимо установить величину offset в нуль.
Возвращаемые значения
Предыдущая величина курсора поля.
Ошибки
Нет.
mysql_field_tell()
MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *result)
Описание
Возвращает позицию курсора поля, использованную для последнего вызова функции mysql_fetch_field() . Эта величина может использоваться как аргумент в функции mysql_field_seek() .
Возвращаемые значения
Текущая позиция курсора поля.
Ошибки
Нет.
mysql_free_result()
void mysql_free_result(MYSQL_RES *result)
Описание
Освобождает память, выделенную для результирующего набора данных функциями mysql_store_result() , mysql_use_result() , mysql_list_dbs() и т.д. После выполнения операций с результирующим набором необходимо освободить используемую под него память вызовом функции mysql_free_result() .
Возвращаемые значения
Нет.
Ошибки
Нет.
mysql_get_client_info()
char *mysql_get_client_info(void)
Описание
Возвращает строку, представляющую версию библиотеки данного клиента.
Возвращаемые значения
Символьная строка, которая представляет версию библиотеки данного клиента MySQL.
Ошибки
Нет.
mysql_get_host_info()
char *mysql_get_host_info(MYSQL *mysql)
Описание
Возвращает строку, описывающую тип используемого соединения, включая имя серверного хоста.
Возвращаемые значения
Символьная строка, представляющая имя серверного хоста и тип данного соединения.
Ошибки
Нет.
mysql_get_proto_info()
unsigned int mysql_get_proto_info(MYSQL *mysql)
Описание
Возвращает версию протокола, используемую для текущего соединения.
Возвращаемые значения
Беззнаковое целое число, представляющее версию протокола, используемую для текущего соединения.
Ошибки
Нет.
mysql_get_server_info()
char *mysql_get_server_info(MYSQL *mysql)
Описание
Возвращает строку, представляющую номер версии сервера.
Возвращаемые значения
Символьная строка, представляющая номер версии сервера.
Ошибки
Нет.
mysql_info()
char *mysql_info(MYSQL *mysql)
Описание
Извлекает строку, представляющую информацию о последнем выполненном запросе, но только для команд, перечисленных ниже. Для других команд функция mysql_info() возвращает NULL . Строка имеет различный формат в зависимости от типа запроса, как описано ниже. Числа приведены только для иллюстрации; данная строка будет содержать величины, соответствующие конкретному запросу.
INSERT INTO ... SELECT ...
Формат строки: Records: 100 Duplicates: 0 Warnings: 0
INSERT INTO ... VALUES (...),(...),(...)...
Формат строки: Records: 3 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ...
Формат строки: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE
Формат строки: Records: 3 Duplicates: 0 Warnings: 0
UPDATE
Формат строки: Rows matched: 40 Changed: 40 Warnings: 0
Следует учитывать, что функция mysql_info() возвращает величину не-NULL для команды INSERT ... VALUES , только если в данной команде заданы множественные списки величин.
Возвращаемые значения
Символьная строка, представляющая дополнительную информацию о последнем выполненном запросе. NULL , если нет никакой доступной информации по данному запросу.
Ошибки
Нет.
1 2 3 4 5 6
8 8 8
| |