mysql_create_db()
int mysql_create_db(MYSQL *mysql, const char *db)
Описание
Создает базу данных, указанную в параметре db .
Данная функция не рекомендуется. Вместо нее предпочтительно использовать функцию mysql_query() для выполнения SQL-команды CREATE DATABASE .
Возвращаемые значения
Нуль, если база данных создана успешно. Ненулевая величина, если произошла ошибка.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
Пример
if(mysql_create_db(&mysql, "my_database")) { fprintf(stderr, "Failed to create new database. Error: %s\n", mysql_error(&mysql)); }
mysql_data_seek()
void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset)
Описание
Ищет произвольную строку в результирующем наборе запроса. Для этого требуется, чтобы структура результирующего набора содержала целиком весь результат данного запроса, поэтому mysql_data_seek() может использоваться только в сочетании с mysql_store_result() , но не с mysql_use_result() .
Адрес смещения должен быть величиной в диапазоне от 0 до mysql_num_rows(result)-1 .
Возвращаемые значения
Нет.
Ошибки
Нет.
mysql_debug()
void mysql_debug(const char *debug)
Описание
Выполняет отладочные операции DBUG_PUSH с заданной строкой. Функция mysql_debug() использует отладочную библиотеку Fred Fish debug . Для использования этой функции необходимо компилировать библиотеку клиента с поддержкой отладки (см. разделы Отладка сервера MySQL и Отладка клиента MySQL).
Возвращаемые значения
Нет.
Ошибки
Нет.
Пример
Представленный здесь вызов функции заставляет библиотеку клиента генерировать трассировочный файл в каталоге "/tmp/client.trace" на клиентской машине:
mysql_debug("d:t:O,/tmp/client.trace");
mysql_drop_db()
int mysql_drop_db(MYSQL *mysql, const char *db)
Описание
Уничтожает базу данных, указанную в параметре db .
Данная функция не рекомендуется. Вместо нее предпочтительно использовать функцию mysql_query() для выполнения SQL-команды DROP DATABASE .
Возвращаемые значения
Нуль, если база данных удалена успешно. Ненулевая величина, если произошла ошибка.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
Пример
if(mysql_drop_db(&mysql, "my_database")) fprintf(stderr, "Failed to drop the database: Error: %s\n", mysql_error(&mysql));
mysql_dump_debug_info()
int mysql_dump_debug_info(MYSQL *mysql)
Описание
Предписывает серверу производить запись отладочной информации в журнал. Для работы функции необходимо, чтобы подключенный пользователь имел привилегию SUPER .
Возвращаемые значения
Нуль, если команда выполнена успешно. Ненулевая величина, если произошла ошибка.
Ошибки
CR_COMMANDS_OUT_OF_SYNC
Команды были выполнены в ненадлежащем порядке.
CR_SERVER_GONE_ERROR
Сервер MySQL неожиданно завершил работу.
CR_SERVER_LOST
Соединение с сервером прервалось в процессе данного запроса.
CR_UNKNOWN_ERROR
Произошла неизвестная ошибка.
mysql_eof()
my_bool mysql_eof(MYSQL_RES *result)
Описание
Данная функция не рекомендуется. Вместо нее можно использовать функции mysql_errno() или mysql_error() .
Функция mysql_eof() определяет, была ли данная строка последней из прочитанных в результирующем наборе данных.
Если результирующий набор получен путем успешного вызова функции mysql_store_result() , то данный клиент получает полный набор данных за одну операцию. В этом случае возврат NULL из mysql_fetch_row() всегда означает, что достигнут конец результирующего набора и нет необходимости в вызове функции mysql_eof() . При использовании совместно с mysql_store_result() функция mysql_eof() всегда будет возвращать TRUE .
С другой стороны, при использовании mysql_use_result() для инициализации извлечения результирующего набора, клиент получает строки набора с сервера поочередно при повторных вызовах функции mysql_fetch_row() . Поскольку в этом процессе может возникнуть ошибка в соединении, NULL , полученный от mysql_fetch_row() , не всегда означает что конец результата был достигнут корректно. В этом случае вы можете использовать mysql_eof() , чтобы выяснить, что же случилось. mysql_eof() вернет ненулевую величину, если конец результирующего набора был достигнут, и нуль, если произошла ошибка.
Исторически сложилось так, что mysql_eof() по своим задачам сходна со стандартными функциями обработки ошибок MySQL mysql_errno() и mysql_error() . Поскольку эти функции дают одну и ту же информацию, их использование более предпочтительно чем mysql_eof() , которая сейчас выведена из употребления (в действительности они предоставляют еще больше информации, т.к. mysql_eof() возвращает только булево значение, в то время как функции обработки ошибок сообщают причину, по которой ошибка произошла).
Возвращаемые значения
Нуль, если ошибок не произошло. Ненулевая величина, если конец результирующего набора данных достигнут.
Ошибки
Никаких.
Пример
Следующий пример иллюстрирует применение mysql_eof() :
mysql_query(&mysql,"SELECT * FROM some_table"); result = mysql_use_result(&mysql); while((row = mysql_fetch_row(result))) { // делаем что-то с данными } if(!mysql_eof(result)) // mysql_fetch_row() сбойнул из-за ошибки { fprintf(stderr, "Error: %s\n", mysql_error(&mysql)); }
Того же эффекта вы можете достичь с помощью стандартных функций ошибок MySQL:
mysql_query(&mysql,"SELECT * FROM some_table"); result = mysql_use_result(&mysql); while((row = mysql_fetch_row(result))) { // что-то делаем с данными } if(mysql_errno(&mysql)) // mysql_fetch_row() сбойнул из-за ошибки { fprintf(stderr, "Error: %s\n", mysql_error(&mysql)); }
mysql_errno()
unsigned int mysql_errno(MYSQL *mysql)
Описание
Для соединения, указанного в mysql , функция mysql_errno() возвращает код ошибки для последней запущенной функции интерфейса, которая может быть успешной или не выполниться. Возвращение нулевой величины означает, что ошибка не возникала. Номера сообщений об ошибке для клиентов перечислены в заголовочном файле MySQL "errmsg.h". Номера серверных сообщений об ошибке даны в файле "mysqld_error.h". В исходном дистрибутиве MySQL можно найти полный список сообщений об ошибках и номеров ошибок в файле "Docs/mysqld_error.txt".
Возвращаемые значения
Значение кода ошибки. Нуль, если ошибка не возникала.
Ошибки
Нет.
mysql_error()
char *mysql_error(MYSQL *mysql)
Описание
Для соединения, указанного в mysql , функция mysql_error() возвращает сообщение об ошибке для последней вызванной функции интерфейса, которая может быть успешной или не выполниться. Если ошибка не возникала, то возвращается пустая строка ("" ). Это означает, что следующие две проверки эквивалентны:
if(mysql_errno(&mysql)) { // ошибка возникла } if(mysql_error(&mysql)[0] != "\0") { // ошибка возникла }
Язык клиентских сообщений об ошибке может быть изменен путем перекомпилирования клиентской библиотеки MySQL. В настоящее время можно выбирать для вывода сообщений об ошибке один из нескольких различных естественных языков (см. раздел Сообщения об ошибках на языках, отличных от английского).
Возвращаемые значения
Символьная строка с описанием ошибки. Пустая строка, если ошибка не возникала.
Ошибки
Нет.
mysql_escape_string()
Вместо этой функции следует использовать функцию mysql_real_escape_string() !
Данная функция идентична функции mysql_real_escape_string() , за исключением того, что mysql_real_escape_string() принимает дескриптор соединения в качестве своего первого аргумента и экранирует строку в соответствии с текущей кодировкой. Функция mysql_escape_string() не требует параметров соединения в качестве аргумента и не учитывает установки текущей кодировки.
mysql_fetch_field()
MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)
Описание
Возвращает определение одного столбца из результирующего набора в виде структуры MYSQL_FIELD . Для извлечения информации обо всех столбцах в результирующем наборе следует вызывать эту функцию повторно. Если полей больше не остается, функция mysql_fetch_field() возвращает NULL .
Каждый раз при выполнении нового запроса SELECT функция mysql_fetch_field() сбрасывается в исходное состояние, чтобы возвращать информацию о первом поле. На поле, возвращенное функцией mysql_fetch_field() , также можно воздействовать, вызвав функцию mysql_field_seek() .
Если вызвана функция mysql_query() для выполнения команды SELECT на таблице, но не вызвана функция mysql_store_result (), то MySQL возвращает установленную по умолчанию длину данных типа BLOB (8 Kб) при вызове функции mysql_fetch_field () для выяснения длины поля BLOB (Размер 8 Kб выбран потому, что MySQL в этом случае не знает максимальной длины для BLOB . Когда-нибудь эта конфигурация будет сделана перестраиваемой.) Поскольку результирующий набор извлечен, то выражение field->max_length содержит длину наибольшей величины для данного столбца в указанном запросе.
Возвращаемые значения
Структура MYSQL_FIELD для текущего столбца. NULL , если полей больше не остается.
Ошибки
Нет.
Пример
MYSQL_FIELD *field; while((field = mysql_fetch_field(result))) { printf("field name %s\n", field->name); }
mysql_fetch_field_direct()
MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *result, unsigned int fieldnr)
Описание
По заданному номеру поля fieldnr для столбца внутри результирующего набора возвращает определение данного поля столбца как структуру MYSQL_FIELD . Эту функцию можно использовать для извлечения определения для произвольного столбца. Величина fieldnr должна находиться в диапазоне от 0 до mysql_num_fields(result)-1 .
Возвращаемые значения
Структура MYSQL_FIELD для указанного столбца.
Ошибки
Нет.
Пример
unsigned int num_fields; unsigned int i; MYSQL_FIELD *field; num_fields = mysql_num_fields(result); for(i = 0; i < num_fields; i++) { field = mysql_fetch_field_direct(result, i); printf("Field %u is %s\n", i, field->name); }
1 2 3 4 5 6
8 8 8
|