mysql_init()
MYSQL *mysql_init(MYSQL *mysql)
Описание
Выделяет или инициализирует объект MYSQL, подходящий для функции mysql_real_connect() . Если аргумент mysql представляет собой указатель NULL , то эта функция выделяет, инициализирует и возвращает новый объект. В противном случае инициализируется указанный объект и возвращается его адрес. Если функция mysql_init() выделяет новый объект, то он будет освобожден при вызове функции mysql_close() , чтобы закрыть данное соединение.
Возвращаемые значения
Инициализированный дескриптор MYSQL . NULL при недостатке памяти для выделения нового объекта.
Ошибки
В случае нехватки памяти возвращается NULL .
mysql_insert_id()
my_ulonglong mysql_insert_id(MYSQL *mysql)
Описание
Возвращает идентификатор ID , сгенерированный для столбца AUTO_INCREMENT предыдущим запросом. Эту функцию следует использовать после выполнения запроса INSERT в таблице, содержащей поле AUTO_INCREMENT .
Следует учитывать, что функция mysql_insert_id() возвращает 0, если предыдущий запрос не сформировал величину AUTO_INCREMENT . Если необходимо сохранить эту величину в дальнейшем, то следует позаботиться о вызове функции mysql_insert_id() немедленно после запроса, который создает указанную величину.
Функция mysql_insert_id() обновляется после команд INSERT и UPDATE , которые генерируют величину AUTO_INCREMENT или устанавливают величину столбца в значение LAST_INSERT_ID(expr) . См. раздел Разные функции.
Следует также иметь в виду, что величина SQL-функции LAST_INSERT_ID() всегда содержит самое последнее сгенерированное значение AUTO_INCREMENT и не обновляется между запросами, так как величина этой функции сохраняется сервером.
Возвращаемые значения
Величина поля AUTO_INCREMENT , обновленного предыдущим запросом. Возвращает нуль, если перед этим не было запроса в данном соединении или если данный запрос не обновил величину AUTO_INCREMENT .
Ошибки
Нет.
mysql_kill()
int mysql_kill(MYSQL *mysql, unsigned long pid)
Описание
Предписывает серверу уничтожить поток, указанный в аргументе pid .
Возвращаемые значения
Нуль при успешном выполнении. Отличная от нуля величина при ошибке.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
mysql_list_dbs()
MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)
Описание
Возвращает результирующий набор, состоящий из имен баз данных на сервере, которые встречаются в простом регулярном выражении, указанном в параметре wild . Параметр wild может содержать шаблонные символы "%" или "_", а также может быть указателем NULL , что соответствует всем базам данных. Вызов функции mysql_list_dbs() аналогичен выполнению запроса SHOW databases [LIKE wild] .
Результирующий набор необходимо освободить с помощью функции mysql_free_result() .
Возвращаемые значения
Результирующий набор MYSQL_RES при успешном выполнении. NULL , если произошла ошибка.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_OUT_OF_MEMORY
Нехватка памяти.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
mysql_list_fields()
MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)
Описание
Возвращает результирующий набор, состоящий из имен полей в заданной таблице, встречающихся в простом регулярном выражении, указанном в параметре wild . Параметр wild может содержать шаблонные символы "%" или "_", а также может быть указателем NULL , что соответствует всем полям. Вызов функции mysql_list_fields() аналогичен выполнению запроса SHOW COLUMNS FROM tbl_name [LIKE wild] .
Следует учитывать, что рекомендуется использовать команду SHOW COLUMNS FROM tbl_nam e вместо функции mysql_list_fields() .
Результирующий набор необходимо освободить с помощью функции mysql_free_result() .
Возвращаемые значения
Результирующий набор MYSQL_RES при успешном выполнении. NULL , если произошла ошибка.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
mysql_list_processes()
MYSQL_RES *mysql_list_processes(MYSQL *mysql)
Описание
Возвращает результирующий набор, описывающий текущие потоки на сервере. Предоставляет тот же тип информации, который выдается утилитой mysqladmin processlist или запросом SHOW PROCESSLIST .
Результирующий набор необходимо освободить с помощью функции mysql_free_result() .
Возвращаемые значения
Результирующий набор MYSQL_RES при успешном выполнении. NULL , если произошла ошибка.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
mysql_list_tables()
MYSQL_RES *mysql_list_tables(MYSQL *mysql, const char *wild)
Описание
Возвращает результирующий набор, состоящий из имен таблиц в текущей базе данных, которые встречаются в простом регулярном выражении, указанном в параметре wild . Параметр wild может содержать шаблонные символы "%" или "_", а также может быть указателем NULL , что соответствует всем таблицам. Вызов функции mysql_list_tables() аналогичен выполнению запроса SHOW tables [LIKE wild] .
Результирующий набор необходимо освободить с помощью функции mysql_free_result() .
Возвращаемые значения
Результирующий набор MYSQL_RES при успешном выполнении. NULL , если произошла ошибка.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
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)
Описание
Возвращает количество столбцов в результирующем наборе.
Следует отметить, что можно получить искомое количество столбцов с помощью указателя или на результирующий набор, или на дескриптор соединения. Дескриптор соединения необходимо использовать, если функции mysql_store_result() или mysql_use_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_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) . Это может случиться, только если что-нибудь происходило не так.
1 2 3 4 5 6
8 8 8
| |