Код API C распределен с MySQL. Это включено в mysqlclient
библиотеку и позволяет программам C обращаться к базе данных.
Многие из клиентуры в MySQL исходном распределении написаны в C. Если Вы ищете примеры, которые демонстрируют, как использовать API C, смотреть на эту клиентуру.
Большинство других API клиента (все кроме Java) использует mysqlclient
библиотеку, чтобы связаться с MySQL сервером. Это означает, что, например, Вы можете воспользоваться преимуществом многих из тех же самых переменных среды, которые используются в соответствии с другими программами клиента, потому что они упомянуты от библиотеки. См. раздел 13.1 Краткого обзора различных программ MySQL, для списка этих переменных.
Клиент имеет максимальный размер буфера связи. Размер буфера, который распределен первоначально (байты 16КБ) автоматически увеличен до максимального размера (заданный по умолчанию максимум - 24M). Так как буферные размеры увеличены только, поскольку варранты запроса, просто увеличивая заданный по умолчанию максимальный предел делают не в inself заставляют большее количество ресурсов использоваться. Эта проверка размера - главным образом проверка для ошибочных запросов и пакетов связи.
Буфер связи должен быть достаточно большой, чтобы содержать одиночную инструкцию SQL (для трафика " клиент прислуге ") и одной строке возвращенных данных (для трафика " прислуга клиенту "). Буфер связи Каждой тематики динамически расширен, чтобы обработать любой запрос или строку до максимального предела. Например, если Вы имеете значения BLOB, которые содержат до 16M данных, Вы должны иметь предел буфера связи по крайней мере 16M (, и в сервере и клиенте). Заданный по умолчанию максимум клиента - 24M, но заданный по умолчанию максимум в сервере - 1M. Вы можете увеличивать это, изменяя значение max_allowed_packet
параметра, когда сервер начат. См. раздел 11.2.3 Настройка параметров сервера.
MySQL сервер сокращает каждый буфер связи к net_buffer_length
байтам после каждого запроса. Для клиентуры, размер буфера, связанного с подключением не уменьшен, пока подключение не закрыто, в котором память клиента времени исправлена.
Если Вы программируете с тематиками, Вы должны компилировать MySQL API C с -
" с клиентом сейфа нити ". Это будет делать сейф тематики API C в подключение. Вы можете позволять двум тематикам совместно использовать то же самое подключение, пока Вы делаете следующее:
mysql_query ()
и mysql_store_result ()
никакая другая тематика не использует то же самое подключение.
mysql_store_result ()
.
mysql_use_result
, Вы должны гарантировать, что никакая другая тематика не спрашивает что - нибудь относительно того же самого подключения, пока набор результатов не закрыт. MYSQL
MYSQL_RES
ВЫБОР
, ПОКАЗ
, ОПИСЫВАТЬ
, ОБЪЯСНЯТЬ
). Информация, возвращенная от запроса называется набором результатов в остатке от этого раздела.
MYSQL_ROW
mysql_fetch_row ()
.
MYSQL_FIELD
mysql_fetch_field ()
неоднократно. Полевые значения - не часть этой структуры; они содержатся в структуре MYSQL_ROW.
MYSQL_FIELD_OFFSET
mysql_field_seek ()
.) Смещения - полевые числа(номера) в пределах строки, начинающейся в нуле.
My_ulonglong
mysql_affected_rows ()
, mysql_num_rows ()
и mysql_insert_id ()
. Этот тип обеспечивает диапазон(дальность) 0
к 1.84e19
. На некоторых системах, делая попытку печатать значение типа my_ulonglong
не будет работать. Чтобы печатать такое значение, конвертируйте(преобразуйте) это к без знака длинному
, и используйте формат печати %lu
. Пример:
Printf (Число строк: %lu\n ", (без знака длинный) mysql_num_rows (результат));
Структура MYSQL_FIELD содержит членов, перечисленных ниже:
Символ * название(имя)
Символ * таблица
таблицы
- пустая строка.
Символ * определение
mysql_list_fields ()
.
Перечисление enum_field_types тип
типа
может быть один из следующего:
Значение Типа | Значение Типа |
FIELD_TYPE_TINY |
TINYINT поле |
FIELD_TYPE_SHORT |
SMALLINT поле |
FIELD_TYPE_LONG |
ЦЕЛОЧИСЛЕННОЕ поле |
FIELD_TYPE_INT24 |
MEDIUMINT поле |
FIELD_TYPE_LONGLONG |
BIGINT поле |
FIELD_TYPE_DECIMAL |
Поле DECIMAL ИЛИ NUMERIC |
FIELD_TYPE_FLOAT |
Поле С ПЛАВАЮЩЕЙ ТОЧКОЙ |
FIELD_TYPE_DOUBLE |
Поле DOUBLE ИЛИ REAL |
FIELD_TYPE_TIMESTAMP |
TIMESTAMP поле |
FIELD_TYPE_DATE |
ПОЛЕ ДАТЫ |
FIELD_TYPE_TIME |
Поле время |
FIELD_TYPE_DATETIME |
DATETIME поле |
FIELD_TYPE_YEAR |
Поле ГОДА |
FIELD_TYPE_STRING |
Строка (СИМВОЛ или VARCHAR ) поле |
FIELD_TYPE_BLOB |
Поле BLOB ИЛИ TEXT (используйте max_length , чтобы определить максимальную длину) |
FIELD_TYPE_SET |
Поле НАБОРА |
FIELD_TYPE_ENUM |
ПЕРЕЧИСЛИМОЕ поле |
FIELD_TYPE_NULL |
Поле С НУЛЕВЫМ ТИПОМ |
FIELD_TYPE_CHAR |
Осужденный; используйте FIELD_TYPE_TINY вместо этого |
IS_NUM ()
макрокоманда, чтобы проверить, действительно ли поле имеет числовой тип. Передайте значение типа
к IS_NUM ()
и это оценит к ИСТИНЕ, если поле числовое:
Если (IS_NUM (поле - > тип)) printf (" Поле - numeric\n ");
Int длина без знака
Int без знака max_length
mysql_store_result ()
или mysql_list_fields ()
, это содержит максимальную длину для поля. Если Вы используете mysql_use_result ()
, значение этой переменной нулевое.
Флажки int без знака
флажков
может иметь нуль или большее количество следующего набора битов:
Значение Флажка | Значение Флажка |
NOT_NULL_FLAG |
Поле не может быть НУЛЕВОЕ(ПУСТОЕ) |
PRI_KEY_FLAG |
Поле - часть первичной клавиши(ключа) |
UNIQUE_KEY_FLAG |
Поле - часть уникальной клавиши(ключа) |
MULTIPLE_KEY_FLAG |
Поле - часть не-уникальной клавиши(ключа). |
UNSIGNED_FLAG |
Поле имеет атрибут БЕЗ ЗНАКА |
ZEROFILL_FLAG |
Поле имеет атрибут ZEROFILL |
BINARY_FLAG |
Поле имеет ДВОИЧНЫЙ атрибут |
AUTO_INCREMENT_FLAG |
Поле имеет атрибут AUTO_INCREMENT |
ENUM_FLAG |
Поле - (осуждаемое) ПЕРЕЧИСЛЕНИЕ |
BLOB_FLAG |
Поле - БОЛЬШОЙ ДВОИЧНЫЙ ОБЪЕКТ или (осуждаемый) ТЕКСТ |
TIMESTAMP_FLAG |
Поле - (осуждаемый) TIMESTAMP |
BLOB_FLAG
, ENUM_FLAG
и флажков TIMESTAMP_FLAG
осуждается, потому что они указывают тип поля скорее чем атрибут его типа. Предпочтительно проверить поле - > тип
против FIELD_TYPE_BLOB
, FIELD_TYPE_ENUM
или FIELD_TYPE_TIMESTAMP
вместо этого. Пример ниже иллюстрирует типичное использование значения флажков
:
Если (поле - > флажки и NOT_NULL_FLAG) printf (" Поле не могут быть null\n ");Вы можете использовать следующие макрокоманды удобства, чтобы определить булево состояние значения
флажков
:
IS_NOT_NULL (флажки) |
Истина, если это поле определено как НЕ ПУСТОЙ УКАЗАТЕЛЬ |
IS_PRI_KEY (флажки) |
Истина, если это поле - первичная клавиша(ключ) |
IS_BLOB (флажки) |
Истина, если это поле - БОЛЬШОЙ ДВОИЧНЫЙ ОБЪЕКТ или ТЕКСТ (осуждаемое; испытательное поле - > напечатает вместо этого) |
Int десятичные числа без знака
Функции, доступные в API C перечислены ниже и описаны в большей детали в следующем разделе. См. раздел 21.4 описания функции API C.
Mysql_affected_rows () | Возвращает число строк, на которые воздействует последняя(прошлая) МОДИФИКАЦИЯ , УДАЛЯТЬ или ВСТАВЛЯТЬ запрос. |
Mysql_close () | Закрывает подключение сервера. |
Mysql_connect () | Соединяется с MySQL сервером. Эта функция осуждается; используйте mysql_real_connect () вместо этого. |
Mysql_change_user () | Измените(замените) пользователя и базу данных на открытом подключении. |
Mysql_create_db () | Создает базу данных. Эта функция осуждается; используйте команду SQL, СОЗДАЮТ БАЗУ ДАННЫХ вместо этого. |
Mysql_data_seek () | Ищет на произвольную строку в наборе результатов запросов. |
Mysql_debug () | Делает DBUG_PUSH с данной строкой. |
Mysql_drop_db () | Понижает(пропускает) базу данных. Эта функция осуждается; используйте БАЗУ ДАННЫХ СНИЖЕНИЯ команды SQL вместо этого. |
Mysql_dump_debug_info () | Заставит запись сервера отладить информацию к файлу регистрации. |
Mysql_eof () | Определяет, действительно ли последняя(прошлая) строка набора результатов читалась. Эта функция осуждается; mysql_errno () или mysql_error () может использоваться вместо этого. |
Mysql_errno () | Возвращает номер ошибки для наиболее недавно вызванная функция MySQL. |
Mysql_error () | Возвращает сообщение об ошибках для наиболее недавно вызванная функция MySQL. |
Mysql_escape_string () | Выходит специальных символов в строке для использования в инструкции SQL. |
Mysql_fetch_field () | Возвращает тип следующего поля таблицы. |
Mysql_fetch_field_direct () | Возвращает тип поля таблицы, учитывая полевой номер. |
Mysql_fetch_fields () | Возвращает массив всех полевых структур. |
Mysql_fetch_lengths () | Возвращает длины всех столбцов в текущей строке. |
Mysql_fetch_row () | Выбирает следующую строку от набора результатов. |
Mysql_field_seek () | Помещает курсор столбца в указанный столбец. |
Mysql_field_count () | Возвращает число столбцов результата для самого современного запроса. |
Mysql_field_tell () | Возвращает позицию полевого курсора, используемого для последнего(прошлого) mysql_fetch_field () . |
Mysql_free_result () | Освобождает память, используемую набором результатов. |
Mysql_get_client_info () | Возвращает информацию версии клиента. |
Mysql_get_host_info () | Возвращает строку, описывающую подключение. |
Mysql_get_proto_info () | Возвращает версию протокола, используемую подключением. |
Mysql_get_server_info () | Возвращает номер версии сервера. |
Mysql_info () | Возвращает информацию относительно наиболее недавно выполненный запрос. |
Mysql_init () | Получает или инициализирует структуру MYSQL. |
Mysql_insert_id () | Возвращает ИДЕНТИФИКАТОР, сгенерированный для столбца AUTO_INCREMENT предыдущим запросом. |
Mysql_kill () | Уничтожите данную тематику. |
Mysql_list_dbs () | Названия(имена) базы данных Возвращений, соответствующие(согласовывающие) простому регулярному выражению. |
Mysql_list_fields () | Имена поля Возвращений, соответствующие(согласовывающие) простому регулярному выражению. |
Mysql_list_processes () | Возвращает список текущих тематик сервера. |
Mysql_list_tables () | Названия(имена) таблицы Возвращений, соответствующие(согласовывающие) простому регулярному выражению. |
Mysql_num_fields () | Возвращает число столбцов в наборе результатов. |
Mysql_num_rows () | Возвращает число строк в наборе результатов. |
Mysql_options () | Набор подключает параметры для mysql_connect () . |
Mysql_ping () | Проверяет(отмечает), действительно ли подключение к серверу работает, повторно соединяясь по мере необходимости. |
Mysql_query () | Выполняет запрос SQL, указанный как строка с нулевым символом в конце. |
Mysql_real_connect () | Соединяется с MySQL сервером. |
Mysql_real_query () | Выполняет запрос SQL, указанный как подсчитанная строка. |
Mysql_reload () | Сообщает серверу перезагружать таблицы предоставления. |
Mysql_row_seek () | Ищет на строку в наборе результатов, используя значение, возвращенное от mysql_row_tell () . |
Mysql_row_tell () | Возвращает позицию курсора строки. |
Mysql_select_db () | Соединяется с базой данных. |
Mysql_shutdown () | Завершает сервер базы данных. |
Mysql_stat () | Возвращает состояние сервера как строка. |
Mysql_store_result () | Отыскивает законченный набор результатов клиенту. |
Mysql_thread_id () | Возвращает текущую тематику ИДЕНТИФИКАТОР. |
Mysql_use_result () | Инициализирует результат " строка рядом " поиск набора. |
Чтобы соединяться с сервером, вызовите(назовите) mysql_init ()
чтобы инициализировать обработчик подключения, затем вызовите(назовите) mysql_real_connect ()
с тем обработчиком (наряду с другой информацией типа имени хоста, названия(имени) пользователя и пароля). Когда Вы сделаны с подключением, вызовите(назовите) mysql_close ()
чтобы закончить это.
В то время как подключение активно, клиент может посылать запросы SQL серверу, используя mysql_query ()
или mysql_real_query ()
. Различие между этими двумя - тот mysql_query ()
ожидает, что запрос будет определен как строка с нулевым символом в конце принимая во внимание, что mysql_real_query ()
ожидает подсчитанную строку. Если строка содержит данные в двоичном коде (который может включать нулевые(пустые) байты), Вы должны использовать mysql_real_query ()
.
Для каждого запроса не-выбора
(например, ВСТАВЬТЕ
, ОБНОВИТЕ(МОДИФИЦИРУЙТЕ)
, УДАЛИТЕ
), Вы можете выяснять, сколько на строк воздействовали (измененными)((замененными)), вызывая mysql_affected_rows ()
.
Поскольку ВЫБОР
делает запрос, Вы отыскиваете выбранные строки в результате набор. (Обратите внимание, что некоторые инструкции ВЫБОР-ПОДОБНЫ
в этом, они возвращают строки. Они включают ПОКАЗ
, ОПИСЫВАЮТ
и ОБЪЯСНЯЮТ
. Они должны быть обработаны тот же самый путь как инструкции SELECT.)
Имеются два пути для клиента, чтобы обработать наборы результата. Один путь состоит в том, чтобы отыскать полный набор результатов внезапно, вызывая mysql_store_result ()
. Эта функция приобретает от сервера все строки, возвращенные запросом и хранит их в клиенте. Второй путь - для клиента, чтобы инициализировать результат " строка рядом " поиск набора, вызывая mysql_use_result ()
. Эта функция инициализирует поиск, но фактически не получает никакие строки от сервера.
В обоих случаях(делах), Вы обращаетесь к строкам, вызывая mysql_fetch_row ()
. С mysql_store_result ()
, mysql_fetch_row ()
обращается к строкам, которые уже были выбраны от сервера. С mysql_use_result ()
, mysql_fetch_row ()
фактически отыскивает строку от сервера. Информация относительно как размер значений данных в каждой строке доступна, вызывая mysql_fetch_lengths ()
.
После того, как Вы сделаны с набором результатов, вызовите(назовите) mysql_free_result ()
чтобы освободить память, используемую для этого.
Два механизма поиска дополнительны. Программы Клиента должны выбрать подход, который является большинством соответствующего их требованиям. Практически, клиентура имеет тенденцию использовать mysql_store_result ()
более обычно.
Преимущество mysql_store_result ()
состоит в том, что, так как строки все были выбраны клиенту, Вы не только можете обращаться к строкам последовательно, Вы можете двигаться назад и вперед в набор результатов, используя mysql_data_seek ()
или mysql_row_seek ()
чтобы изменить(заменить) текущую позицию строки в пределах набора результатов. Вы можете также выяснять, сколько строк там - вызывая mysql_num_rows ()
. С другой стороны, требования памяти для mysql_store_result ()
могут быть очень высоки для больших наборов результата, и Вы, более вероятно, столкнетесь с условиями(состояниями) за пределами памяти.
Преимущество mysql_use_result ()
состоит в том, что клиент требует меньшего количества памяти для набора результатов, так как это обслуживает(поддерживает) только одну строку одновременно (и с тех пор имеется меньшее количество распределения наверху, mysql_use_result ()
может быть быстрее). Недостатки(неудобства) - то, что Вы должны обработать каждую строку быстро, чтобы избежать связывать сервер, Вы не имеете произвольный доступ к строкам в пределах набора результатов (Вы можете только обращаться к строкам последовательно), и Вы не знаете, сколько строк находятся в наборе результатов, пока Вы не отыскали их всех. Кроме того, Вы должны отыскать все строки, даже если Вы решаете в середине поиска, что вы нашли информацию, которую Вы искали.
API делает это возможным для клиентуры, чтобы ответить соответственно на запросы (отыскивающий строки только по мере необходимости) без того, чтобы знать, действительно ли запрос - ВЫБОР
. Вы можете делать это, вызывая mysql_store_result ()
после каждого mysql_query ()
(или mysql_real_query ()
). Если запрос набора результата преуспевает, запрос был ВЫБОР
, и Вы можете читать строки. Если сбои запроса набора результата, вызовите(назовите) mysql_field_count ()
чтобы определить, действительно ли результат должен был фактически ожидаться. Если mysql_field_count ()
нуль возвращений, запрос не возвратил никакие данные (индикация, что это была ВСТАВКА
, ОБНОВИТЕ(МОДИФИЦИРУЙТЕ)
, УДАЛИТЕ
, и т.д.), и таким образом не ожидаемый, чтобы возвратить строки. Если mysql_field_count ()
ненулевой, запрос должен был возвратить строки, но не делал. Это указывает, что запрос был ВЫБОР
, который потерпел неудачу. См. описание для mysql_field_count ()
для примера того, как это может быть сделано.
И mysql_store_result ()
и mysql_use_result ()
позволяют Вам получать информацию относительно полей, которые составляют набор результатов (число полей, их названий(имен) и типов, и т.д.). Вы можете обращаться к полевой информации последовательно в пределах строки, вызывая mysql_fetch_field ()
неоднократно, или полевым номером в пределах строки, вызывая mysql_fetch_field_direct ()
. Текущая полевая позиция курсора может быть изменена(заменена), вызывая mysql_field_seek ()
. Установка полевого курсора воздействует на последующие запросы к mysql_fetch_field ()
. Вы можете также получить информацию для полей внезапно, вызывая mysql_fetch_fields ()
.
Для обнаружения и сообщения о ошибках, MySQL обеспечивает доступ к данным об ошибках посредством mysql_errno ()
и mysql_error ()
функциями. Они возвращают код ошибки или сообщение об ошибках для наиболее недавно вызванная функция, которая может следовать или терпеть неудачу, позволяя Вам определить, когда ошибка произошла и, каково это было.
В описаниях ниже, параметр или возвращаемое значение ПУСТОГО УКАЗАТЕЛЯ
означает ПУСТОЙ УКАЗАТЕЛЬ
в смысле языка программирования C, не MySQL значение NULL.
Функции, которые возвращают значение вообще, возвращают указатель или целое число. Если не определено иначе, функции, возвращающие указатель возвращают не-нулевое(не-пустое)
значение, чтобы указать успех или значение NULL, чтобы указать ошибку, и функции, возвращающие целочисленный нуль возвращения, чтобы указать успех или ненулевой, чтобы указать ошибку. Обратите внимание, что " " ненулевой " означает только это. Если функциональное описание не говорит иначе, не проверите против значения другого чем нуль:
Если (результат) /* исправляет */ ... ошибка ... если (кончается < 0) /* неправильный */ ... ошибка ..., если (кончаются == -1) /* неправильный */ ... ошибка ...
Когда функция возвращает ошибку, подраздел Ошибок функционального описания перечисляет возможные типы ошибок. Вы можете выяснять который из них произо&ый, вызывая mysql_errno ()
. Представление строки ошибки может быть получено, вызывая mysql_error ()
.
Mysql_affected_rows ()
My_ulonglong mysql_affected_rows (MYSQL *mysql)
Возвращает число строк, на которые воздействуют (измененный)((замененный)) последней(прошлой) МОДИФИКАЦИЕЙ
, УДАЛЯТЬ
или ВСТАВЛЯТЬ
запрос. Может Называться немедленно после mysql_query ()
для МОДИФИКАЦИИ
, инструкций DELETE ИЛИ INSERT
. Для инструкций SELECT, mysql_affected_rows ()
работает подобно mysql_num_rows ()
.
Mysql_affected_rows ()
в настоящее время осуществлен как макрокоманда.
Целое число большее чем нуль указывает число строк, на которые воздействуют или найденный. Нуль указывает, что никакие отчеты(рекорды) не соответствовали(согласовали) предложению WHERE в запросе или что никакой запрос не все же был выполнен. -1 указывает, что запрос возвратил ошибку или что, для запроса ВЫБОРА
, mysql_affected_rows ()
назывался до запроса mysql_store_result ()
.
Ни один.
mysql_query(&mysql,"UPDATE Изделия(программы) УСТАНАВЛИВАЮТ cost=cost*1.25 ГДЕ group=10 "); printf (" %d изделия(программы) updated",mysql_affected_rows(&mysql));
Mysql_close ()
Пусто mysql_close (MYSQL *mysql)
Закрывает предварительно открытое подключение. Mysql_close ()
также освободил бы маркер(дескриптор) подключения, указанный mysql
, если маркер(дескриптор) был распределен автоматически mysql_init ()
или mysql_connect ()
.
Ни один.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_connect ()
MYSQL *mysql_connect (MYSQL *mysql, символ константы *host, символ константы *user, символ константы *passwd)
Эта функция осуждается. Предпочтительно использовать mysql_real_connect ()
вместо этого.
Mysql_connect ()
пытается устанавливать подключение к MySQL двигателю базы данных, выполняющему на главном компьютере
. Mysql_connect ()
должен завершить успешно прежде, чем Вы можете выполнять любую из других функций API, за исключением mysql_get_client_info ()
.
Значения параметров - тот же самый что касается соответствующих параметров для mysql_real_connect ()
с различием, что подключение paramater может быть НУЛЕВОЕ(ПУСТОЕ)
. В этом случае(регистре) API C распределяет память для структуры подключения автоматически и освобождает это, когда Вы вызываете(называете) mysql_close ()
. Недостаток(неудобство) этого подхода - то, что Вы не можете отыскивать сообщение об ошибках, если подключение терпит неудачу. (Чтобы получить данные об ошибках от mysql_errno ()
или mysql_error ()
, Вы должны обеспечить правильный(допустимый) указатель MYSQL.)
Тот же самый что касается mysql_real_connect ()
.
Тот же самый что касается mysql_real_connect ()
.
Mysql_change_user ()
My_bool mysql_change_user (MYSQL *mysql, символ константы *user, символ константы *password, символ константы *db)
Изменяет(заменяет) пользователя и заставляет базу данных, указанную db
стать заданной по умолчанию (текущей) базой данных на подключении, указанном mysql
. В последующих запросах, эта база данных - значение по умолчанию для ссылок(справочников) таблицы, которые не включают явный спецификатор базы данных.
Эта функция была представлена в MySQL 3.23.3.
Mysql_change_user ()
терпит неудачу, если связанный пользователь не может быть заверен или если он не имеет разрешение использовать базу данных. В этом случае(регистре) пользователь и база данных не изменен(заменен)
Db
параметр может быть установлен в ПУСТОЙ УКАЗАТЕЛЬ
, если Вы не хотите иметь заданную по умолчанию базу данных.
Нуль для успеха. Ненулевое, если ошибка произошла.
Тот же самый, что Вы можете добраться от mysql_real_connect ()
.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
ER_UNKNOWN_COM_ERROR
ER_ACCESS_DENIED_ERROR
ER_BAD_DB_ERROR
ER_DBACCESS_DENIED_ERROR
ER_WRONG_DB_NAME
Если (mysql_change_user(&mysql, "пользователь", "пароль", "new_database")) {fprintf (stderr, " Не сумел изменять(заменять) пользователя. Ошибка: %s\n ", mysql_error(&mysql));}
Mysql_create_db ()
Int mysql_create_db (MYSQL *mysql, символ константы *db)
Создает базу данных, названную db
параметром.
Эта функция осуждается. Предпочтительно использовать mysql_query ()
чтобы выпустить инструкцию SQL CREATE DATABASE вместо этого.
Нуль, если база данных была создана успешно. Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
if(mysql_create_db(&mysql, "my_database")) {fprintf (stderr, " Не сумел создавать новую базу данных. Ошибка: %s\n ", mysql_error(&mysql));}
Mysql_data_seek ()
Пусто mysql_data_seek (MYSQL_RES *result, длинное длинное смещение без знака)
Ищет на произвольную строку в наборе результатов запросов. Это требует, чтобы структура набора результата содержала полный результат запроса, так что mysql_data_seek ()
может использоваться в конъюнкции только с mysql_store_result ()
, не с mysql_use_result ()
.
Смещение должно быть значение в диапазоне(дальности) от 0 до mysql_num_rows -1 (результат)
.
Ни один.
Ни один.
Mysql_debug ()
Пусто mysql_debug (символ *debug)
Делает DBUG_PUSH
с данной строкой. Mysql_debug ()
использует Фреда Фиша, отлаживают библиотеку. Чтобы использовать эту функцию, Вы должны компилировать библиотеку клиентов, чтобы поддержать отладку. См. раздел G.1 Отладка MySQL сервера. См. раздел G.2 Отладка MySQL клиента.
Ни один.
Ни один.
Запрос, показанный ниже заставляет библиотеку клиентов генерировать файл следа в "/tmp/client.trace" на машине клиента:
Mysql_debug (" d:t:O, /tmp/client.trace ");
Mysql_drop_db ()
Int mysql_drop_db (MYSQL *mysql, символ константы *db)
Понижает(пропускает) базу данных, названную db
параметром.
Эта функция осуждается. Предпочтительно использовать mysql_query ()
чтобы выпустить инструкцию SQL DROP DATABASE вместо этого.
Нуль, если база данных была понижена успешно. Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
if(mysql_drop_db(&mysql, "my_database")) fprintf (stderr, " Не сумел понижать(пропускать) базу данных: Ошибка: %s\n ", mysql_error(&mysql));
Mysql_dump_debug_info ()
Int mysql_dump_debug_info (MYSQL *mysql)
Инструктирует сервер записывать некоторую информацию отладки к файлу регистрации. Связанный пользователь должен иметь привилегию процесса для этого, чтобы работать.
Нуль, если команда была успешна. Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_eof ()
My_bool mysql_eof (MYSQL_RES *result)
Эта функция осуждается. Mysql_errno ()
или mysql_error ()
может использоваться вместо этого.
Mysql_eof ()
определяет, действительно ли последняя(прошлая) строка набора результатов читалась.
Если Вы приобретаете результат, сходят с успешного запроса к mysql_store_result ()
, клиент принимает полный набор в одной операции. В этом случае(регистре), НУЛЕВОЕ(ПУСТОЕ)
возвращение от mysql_fetch_row ()
всегда означает, что конец набора результатов был достигнут, и ненужно вызвать(назвать) mysql_eof ()
.
С другой стороны, если Вы используете mysql_use_result ()
чтобы инициализировать поиск набора результата, строки набора получены от сервера один за другим, поскольку Вы вызываете(называете) mysql_fetch_row ()
неоднократно. Поскольку ошибка может происходить на подключении в течение этого процесса, НУЛЕВОЕ(ПУСТОЕ)
возвращаемое значение от mysql_fetch_row ()
не обязательно подразумевает, что конец набора результатов был достигнут обычно. В этом случае(регистре), Вы можете использовать mysql_eof ()
чтобы определить то, что случалось. Mysql_eof ()
возвращает ненулевое значение, если конец набора результатов был достигнут и нуль, если ошибка произошла.
Исторически, mysql_eof ()
предшествует стандарту MySQL интегралы вероятности ошибки mysql_errno ()
и mysql_error ()
. Так как те интегралы вероятности ошибки обеспечивают ту же самую информацию, их использование предпочтено по mysql_eof ()
, который теперь осуждается. (Фактически, они обеспечивают подробную информацию, так как mysql_eof ()
возвращает только булево значение принимая во внимание, что интегралы вероятности ошибки указывают причину для ошибки, когда каждый происходит.)
Нуль, если ошибка произошла. Ненулевое, если конец набора результатов был достигнут.
Ни один.
Следующий пример показывает, как Вы могли бы использовать mysql_eof ()
:
mysql_query(&mysql,"SELECT * ОТ some_table "); кончитесь = mysql_use_result(&mysql);while((row = mysql_fetch_row (результат))) {// делает кое-что с данными} если (! Mysql_eof (результат)) // mysql_fetch_row () потерпел неудачу из-за ошибки {fprintf (stderr, " Ошибка: %s\n ", mysql_error(&mysql));}
Однако, Вы можете достигать того же самого эффекта со стандартом MySQL интегралы вероятности ошибки:
mysql_query(&mysql,"SELECT * ОТ some_table "); кончитесь = mysql_use_result(&mysql);while((row = mysql_fetch_row (результат))) {// кое-что с data}if(mysql_errno(&mysql)) // mysql_fetch_row () потерпело неудачу из-за ошибки {fprintf (stderr, " Ошибка: %s\n ", mysql_error(&mysql));}
Mysql_errno ()
Int без знака mysql_errno (MYSQL *mysql)
Для подключения, указанного mysql
, mysql_errno ()
возвращает код ошибки для наиболее недавно вызванная функция API, которая может следовать или терпеть неудачу. Возвращаемое значение нуля означает, что никакая ошибка не произошла. Числа(номера) сообщения об ошибках Клиента перечислены в MySQL "errmsg.h" файл заголовка. Числа(номера) сообщения об ошибках Сервера перечислены в "mysqld_error.h"
Значение кода ошибки. Нуль, если никакая ошибка не произошла.
Ни один.
Mysql_error ()
Символ *mysql_error (MYSQL *mysql)
Для подключения, указанного mysql
, mysql_error ()
возвращает сообщение об ошибках для наиболее недавно вызванная функция API, которая может следовать или терпеть неудачу. Пустая строка (" "
) была бы возвращена, если никакая ошибка не произошла. Это означает следующий, два испытания эквивалентны:
if(mysql_errno(&mysql)) {// ошибка occurred}if(mysql_error(&mysql)[0]! = '\0 ') {// ошибка произошел}
Язык сообщений об ошибках клиента может быть изменен(заменен), перетранслируя MySQL библиотеку клиентов. В настоящее время Вы можете выбирать сообщения об ошибках на нескольких различных языках. См. раздел 10.1, какие языки поддержаны MySQL?.
Символьная строка, которая описывает ошибку. Пустая строка, если никакая ошибка не произошла.
Ни один.
Mysql_escape_string ()
Int без знака mysql_escape_string (символ *to, символ константы *from, int длина без знака)
Кодирует строку в от
к выйденной строке SQL, которая может быть послана серверу в инструкции SQL, размещает результат в к
, и добавляет заканчивающийся байт пустого указателя. Закодированные Символы - NUL
(ASCII 0), "\n", "\r", "\", " ", """ и Управление - Z (см. раздел 7.1 Литералов: как записывать строки и числа(номера)).
Строка, указанная от
должна быть байты длины
долго. Вы должны распределить, чтобы
буферизовать, чтобы быть по крайней мере length*2+1
байтами долго. (В худшем случае(регистре), каждый символ может был должен быть закодирован как использование двух байтов, и Вы нуждаетесь в участке памяти для заканчивающегося байта пустого указателя.) Когда mysql_escape_string ()
возвращения, содержание к
будут строка с нулевым символом в конце. Возвращаемое значение - длина закодированной строки, не, включая заканчивающийся нулевой символ.
Запрос символа [1000], *end; закончите = strmov (запрос, " ВСТАВЬТЕ В значения test_table ("); *end ++ = '\'; закончите + = mysql_escape_string (конец, ", что - этот ", 11); *end ++ = '\';*end ++ = ','; *end ++ = '\'; закончите + = mysql_escape_string (конец, " данные в двоичном коде: \0\r\n ", 16); *end ++ = '\';*end ++ = ')'; если (mysql_real_query(&mysql,query,(unsigned Int) (конец - запрос))) {fprintf (stderr, " Не сумел вставлять строку, Ошибка: %s\n ", mysql_error(&mysql));}
Strmov ()
функция, используемая в примере включена в mysqlclient
библиотеку и работает подобно strcpy ()
но возвращает указатель на заканчивающийся пустой указатель первого параметра.
Длина значения, помещенного в к
, не, включая заканчивающийся нулевой символ.
Ни один.
Mysql_fetch_field ()
MYSQL_FIELD *mysql_fetch_field (MYSQL_RES *result)
Возвращает определение одного столбца набора результатов как структура MYSQL_FIELD. Вызовите(назовите) эту функцию неоднократно, чтобы отыскать информацию относительно всех столбцов в наборе результатов. Mysql_fetch_field ()
возвращает ПУСТОЙ УКАЗАТЕЛЬ
, когда не больше полей оставлены.
Mysql_fetch_field ()
сброшен, чтобы возвратить информацию относительно первого поля, каждый раз Вы выполняете новый запрос ВЫБОРА
. На поле, возвращенное mysql_fetch_field ()
также воздействуют запросы к mysql_field_seek ()
.
Если вы назвали mysql_query ()
чтобы исполнить ВЫБОР
на таблице, но не назвали mysql_store_result ()
, MySQL возвращает заданную по умолчанию длину капли (байты 8КБ) если Вы вызываете(называете) mysql_fetch_field ()
чтобы просить о длине поля BLOB. (Размер 8КБ выбран, потому что MySQL не знает максимальную длину для БОЛЬШОГО ДВОИЧНОГО ОБЪЕКТА
. Это должно быть сделано с перестраиваемой конфигурацией когда-нибудь.) Как только вы отыскали, набор результатов, поле - > max_length
содержит длину самого большого значения для этого столбца в определенном запросе.
Структура MYSQL_FIELD для текущего столбца. ПУСТОЙ УКАЗАТЕЛЬ
, если никакие столбцы не оставлены.
Ни один.
MYSQL_FIELD *field; в то время как ((поле = mysql_fetch_field (результат))) {printf (" имя поля %s\n ", поле - > название(имя));}
Mysql_fetch_fields ()
MYSQL_FIELD *mysql_fetch_fields (MYSQL_RES *result)
Возвращает массив всех структур MYSQL_FIELD для набора результатов. Каждая структура обеспечивает определение поля для одного столбца набора результатов.
Массив структур MYSQL_FIELD для всех столбцов набора результатов.
Ни один.
Int без знака num_fields; int без знака я; MYSQL_FIELD *fields; num_fields = mysql_num_fields (результат); поля = mysql_fetch_fields (результат); для (я = 0; я < num_fields; я ++) {printf (" Поле - %s\n ", я, поля [я] .name);}
Mysql_fetch_field_direct ()
MYSQL_FIELD *mysql_fetch_field_direct (MYSQL_RES *result, int без знака fieldnr)
Учитывая полевой номер fieldnr
для столбца в пределах набора результатов, возвращения, что определение поля столбца как структура MYSQL_FIELD. Вы можете использовать эту функцию, чтобы отыскать определение для произвольного столбца. Значение fieldnr
должно быть в диапазоне(дальности) от 0 до mysql_num_fields -1 (результат)
.
Структура MYSQL_FIELD для указанного столбца.
Ни один.
Int без знака num_fields; int без знака я; MYSQL_FIELD *field; num_fields = mysql_num_fields (результат); для (я = 0; я < num_fields; я ++) {поле = mysql_fetch_field_direct (результат, i); printf (" Поле - %s\n ", я, поле - > название(имя));}
Mysql_fetch_lengths ()
Длинный *mysql_fetch_lengths без знака (MYSQL_RES *result)
Возвращает длины столбцов текущей строки в пределах набора результатов. Если Вы планируете копировать полевые значения, эта информация длины также полезна для оптимизации, потому что Вы можете избегать вызывать strlen ()
. Кроме того, если набор результатов содержит данные в двоичном коде, Вы должны использовать эту функцию, чтобы определить размер данных, потому что strlen ()
возвращает неправильные результаты для любого поля, содержащего нулевые символы.
Длина для пустых столбцов и для столбцов, содержащих значения NULL нулевая. Чтобы видеть, как отличить эти два случая(дел), см. описание для mysql_fetch_row ()
.
Массив длинных целых чисел без знака, представляющих размер каждого столбца (не, включая любые нулевые символы завершения). ПУСТОЙ УКАЗАТЕЛЬ
, если ошибка произошла.
Mysql_fetch_lengths ()
правилен(допустим) только для текущей строки набора результатов. Это возвращает ПУСТОЙ УКАЗАТЕЛЬ
, если Вы вызываете(называете) это перед запросом mysql_fetch_row ()
или после поиска всех строк в результате.
MYSQL_ROW строка; длинный *lengths без знака; int без знака num_fields; int без знака я; строка = mysql_fetch_row (результат); если (строка) {num_fields = mysql_num_fields (результат); длины = mysql_fetch_lengths (результат); для (я = 0; я < num_fields; я ++) {printf (" Столбец %u - %lu байты в длине \n ", мне, длины [я]);}}
Mysql_fetch_row ()
MYSQL_ROW mysql_fetch_row (MYSQL_RES *result)
Отыскивает следующую строку набора результатов. Когда используется после mysql_store_result ()
, mysql_fetch_row ()
возвращает ПУСТОЙ УКАЗАТЕЛЬ
, когда не имеется больше строк, чтобы отыскать. Когда используется после mysql_use_result ()
, mysql_fetch_row ()
возвращает ПУСТОЙ УКАЗАТЕЛЬ
, когда не имеется больше строк, чтобы отыскать или если ошибка произошла.
Число значений в строке дается mysql_num_fields (результат)
. Если строка
проводит(держит) возвращаемое значение от запроса до mysql_fetch_row ()
, к указателям на значения обращаются как строка [0]
к строке [mysql_num_fields (результат) -1]
. НУЛЕВЫЕ(ПУСТЫЕ)
значения в строке обозначены указателями NULL.
Длины полевых значений в строке могут быть получены, вызывая mysql_fetch_lengths ()
. Пустые поля и поля, содержащие ПУСТОЙ УКАЗАТЕЛЬ
оба имеют длину 0; Вы можете отличать их, проверяя указатель для полевого значения. Если указатель НУЛЕВОЙ(ПУСТОЙ)
, поле НУЛЕВОЕ(ПУСТОЕ)
; иначе поле пусто.
Структура MYSQL_ROW для следующей строки. ПУСТОЙ УКАЗАТЕЛЬ
, если не имеется больше строк, чтобы отыскать или если ошибка произошла.
CR_SERVER_LOST
CR_UNKNOWN_ERROR
MYSQL_ROW строка; int без знака num_fields; int без знака я; num_fields = mysql_num_fields (результат); в то время как ((строка = mysql_fetch_row (результат))) {длинный *lengths без знака; длины = mysql_fetch_lengths (результат); для (я = 0; я < num_fields; я ++) {printf (" [% .*s] ", (int) длины [я], строка [я]? Строка [я]: "ПУСТОЙ УКАЗАТЕЛЬ");} printf ("\n");}
Mysql_field_count ()
Int без знака mysql_field_count (MYSQL *mysql)
Если Вы используете версию MySQL ранее чем 3.22.24, Вы должны использовать int без знака mysql_num_fields (MYSQL *mysql)
вместо этого.
Возвращает число столбцов для самого современного запроса на подключении.
Нормальное использование этой функции - то, когда mysql_store_result ()
возвратил ПУСТОЙ УКАЗАТЕЛЬ
(и таким образом Вы не имеете никакого указателя набора результата). В этом случае(регистре), Вы можете вызывать(называть) mysql_field_count ()
чтобы определить, действительно ли mysql_store_result ()
должен был произвести не-пустой результат. Это позволяет программе клиента брать надлежащее действие без того, чтобы знать, действительно ли запрос был ВЫБОР
(или ВЫБОР-ПОДОБНЫЙ
) инструкция. Пример, показанный ниже иллюстрирует, как это может быть сделано.
Целое число без знака, представляющее число полей в наборе результатов.
Ни один.
MYSQL_RES *result; int без знака num_fields; int без знака num_rows; если (mysql_query(&mysql,query_string)) {// ошибка} еще // запрос следовал, процесс за любыми данными, возвращенными этим {результат = mysql_store_result(&mysql); если (результат) // имеются строки {num_fields = mysql_num_fields (результат); // отыскивают строки, затем звонят, mysql_free_result (результат)} еще // mysql_store_result () не возвратил ничто; это должно иметь? {if(mysql_field_count(&mysql) == 0) {// запрос не возвращает данные // (это не было ВЫБОР) num_rows = mysql_affected_rows(&mysql);} еще // mysql_store_result () должен был возвратить данные {fprintf (stderr, " Ошибка: %s\n ", mysql_error(&mysql
Альтернатива должна заменить mysql_field_count(&mysql
) запрос с mysql_errno(&mysql
). В этом случае(регистре), Вы проверяете непосредственно для ошибки от mysql_store_result
() скорее чем выведение из значения mysql_field_count
() действительно ли инструкция была ВЫБОР
.
Mysql_field_seek ()
MYSQL_FIELD_OFFSET mysql_field_seek (MYSQL_RES *result, MYSQL_FIELD_OFFSET смещение)
Устанавливает полевой курсор к данному смещению. Следующий запрос к mysql_fetch_field ()
отыщет определение поля столбца, связанного с этим смещение.
Чтобы искать на начало строки, передайте значение смещения
нуля.
Предыдущее значение полевого курсора.
Ни один.
Mysql_field_tell ()
MYSQL_FIELD_OFFSET mysql_field_tell (MYSQL_RES *result)
Возвращает позицию полевого курсора, используемого для последнего(прошлого) mysql_fetch_field ()
. Это значение может использоваться как параметр к mysql_field_seek ()
.
Смещение тока(потока) полевого курсора.
Ни один.
Mysql_free_result ()
Пусто mysql_free_result (MYSQL_RES *result)
Освобождает память, распределенную для результата, установленного mysql_store_result ()
, mysql_use_result ()
, mysql_list_dbs ()
, и т.д. Когда Вы сделаны с набором результатов, Вы должны освободить память, которую это использует, вызывая mysql_free_result ()
.
Ни один.
Ни один.
Mysql_get_client_info ()
Символ *mysql_get_client_info (пусто)
Возвращает строку, которая представляет версию библиотеки клиента.
Символьная строка, которая представляет MySQL версию библиотеки клиента.
Ни один.
Mysql_get_host_info ()
Символ *mysql_get_host_info (MYSQL *mysql)
Возвращает строку, описывающую тип подключения в использовании, включая имя хоста сервера.
Символьная строка, представляющая имя хоста сервера и тип подключения.
Ни один.
Mysql_get_proto_info ()
Int без знака mysql_get_proto_info (MYSQL *mysql)
Возвращает версию протокола, используемую текущим подключением.
Целое число без знака, представляющее версию протокола, используемую текущим подключением.
Ни один.
Mysql_get_server_info ()
Символ *mysql_get_server_info (MYSQL *mysql)
Возвращает строку, которая представляет номер версии сервера.
Символьная строка, которая представляет номер версии сервера.
Ни один.
Mysql_info ()
Символ *mysql_info (MYSQL *mysql)
Отыскивает строку, обеспечивающую информацию относительно наиболее недавно выполненный запрос, но только для инструкций, перечисленных ниже. Для других инструкций, mysql_info ()
возвращает ПУСТОЙ УКАЗАТЕЛЬ
. Формат строки изменяется в зависимости от типа запроса, как описано ниже. Числа(номера) иллюстративны только; строка будет содержать значения, соответствующие запросу.
ВСТАВЬТЕ В ..., ВЫБИРАЮТ ...
Отчеты(рекорды): 100 Дубликатов: 0 Предупреждений: 0
ВСТАВЬТЕ В ЗНАЧЕНИЯ ... (...), (...), (...) ...
Отчеты(рекорды): 3 Дубликата: 0 Предупреждений: 0
ЗАГРУЗИТЕ ДАННЫЕ INFILE ...
Отчеты(рекорды): 1 Удаленный: 0 Пропущенный: 0 Предупреждений: 0
ИЗМЕНИТЕ ТАБЛИЦУ
Отчеты(рекорды): 3 Дубликата: 0 Предупреждений: 0
МОДИФИКАЦИЯ
согласованные Строки: 40 Измененный(замененный): 40 Предупреждений: 0
Обратите внимание, что mysql_info ()
возвращает не-нулевое(не-пустое)
значение для ВСТАВКИ ...
инструкция VALUES только, если множественные списки значения определены в инструкции.
Символьная строка, представляющая дополнительную информацию относительно наиболее недавно выполненный запрос. ПУСТОЙ УКАЗАТЕЛЬ
, если никакая информация не доступна для запроса.
Ни один.
Mysql_init ()
MYSQL *mysql_init (MYSQL *mysql)
Распределяет или инициализирует объект(цель) MYSQL, подходящий для mysql_real_connect ()
. Если mysql
- указатель NULL, функция распределяет, инициализирует и возвращает новый объект(цель). Иначе объект(цель) инициализирован, и адрес объекта(цели) возвращен. Если mysql_init ()
распределяет новый объект(цель), это будет освобождено, когда mysql_close ()
называется, чтобы закрыть подключение.
Инициализированный маркер(дескриптор) MYSQL*
. ПУСТОЙ УКАЗАТЕЛЬ
, если имелась недостаточная память, чтобы распределить новый объект(цель).
В случае недостаточной памяти, ПУСТОЙ УКАЗАТЕЛЬ
возвращен.
Mysql_insert_id ()
My_ulonglong mysql_insert_id (MYSQL *mysql)
Возвращает ИДЕНТИФИКАТОР, сгенерированный для столбца AUTO_INCREMENT предыдущим запросом. Используйте эту функцию после того, как Вы выполнили запрос ВСТАВКИ
в таблицу, которая содержит поле AUTO_INCREMENT.
Обратите внимание, что mysql_insert_id ()
возвращается 0
, если предыдущий запрос не генерирует значение AUTO_INCREMENT. Если Вы должны сохранить значение на позже, убедитесь, что вызвали(назвали) mysql_insert_id ()
немедленно после запроса, который генерирует значение.
Также обратите внимание, что значение SQL LAST_INSERT_ID ()
функция всегда содержит наиболее недавно сгенерированное значение AUTO_INCREMENT, и не сброшена между запросами, так как значение той функции поддерживается в сервере.
Значение поля AUTO_INCREMENT, которое было модифицировано предыдущим запросом. Возвращения обнулили бы, если не имелось никакого предыдущего запроса на подключении или если запрос не обновлял(модифицировал) значение AUTO_INCREMENT.
Ни один.
Mysql_kill ()
Int mysql_kill (MYSQL *mysql, длинный pid без знака)
Просит, чтобы сервер уничтожил тематику, указанную pid
.
Нуль для успеха. Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_list_dbs ()
MYSQL_RES *mysql_list_dbs (MYSQL *mysql, символ константы *wild)
Возвращает набор результатов, состоящий из названий(имен) базы данных на сервере, которые соответствуют простому регулярному выражению, указанному диким
параметром. Дикое
может содержать групповые символы "%" или "_", или может быть указатель NULL, чтобы соответствовать всем базам данных. Запрос mysql_list_dbs ()
подобен выполнению баз данных ПОКАЗА
запроса [ПОДОБНО дикому]
.
Вы должны освободить набор результатов с mysql_free_result ()
.
Набор результатов MYSQL_RES
для успеха. ПУСТОЙ УКАЗАТЕЛЬ
, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_OUT_OF_MEMORY
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_list_fields ()
MYSQL_RES *mysql_list_fields (MYSQL *mysql, символ константы *table, символ константы *wild)
Возвращает набор результатов, состоящий из имен поля в данной таблице, которые соответствуют простому регулярному выражению, указанному диким
параметром. Дикое
может содержать групповые символы "%" или "_", или может быть указатель NULL, чтобы соответствовать всем полям. Запрос mysql_list_fields ()
подобен выполнению СТОЛБЦОВ ПОКАЗА
запроса ОТ tbl_name [ПОДОБНО дикому]
.
Обратите внимание, что рекомендуется, чтобы Вы использовали СТОЛБЦЫ ПОКАЗА ОТ tbl_name
вместо mysql_list_fields ()
.
Вы должны освободить набор результатов с mysql_free_result ()
.
Набор результатов MYSQL_RES
для успеха. ПУСТОЙ УКАЗАТЕЛЬ
, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_list_processes ()
MYSQL_RES *mysql_list_processes (MYSQL *mysql)
Возвращает набор результатов, описывающий текущие тематики сервера. Это - тот же самый вид информации как сообщенное mysqladmin processlist
или ПОКАЗОМ PROCESSLIST
запрос.
Вы должны освободить набор результатов с mysql_free_result ()
.
MYSQL_RES
rsult набор для успеха. ПУСТОЙ УКАЗАТЕЛЬ
, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_list_tables ()
MYSQL_RES *mysql_list_tables (MYSQL *mysql, символ константы *wild)
Возвращает набор результатов, состоящий из названий(имен) таблицы в текущей базе данных, которые соответствуют простому регулярному выражению, указанному диким
параметром. Дикое
может содержать групповые символы "%" или "_", или может быть указатель NULL, чтобы соответствовать всем таблицам. Запрос mysql_list_tables ()
подобен выполнению таблиц ПОКАЗА
запроса [ПОДОБНО дикому]
.
Вы должны освободить набор результатов с mysql_free_result ()
.
Набор результатов MYSQL_RES
для успеха. ПУСТОЙ УКАЗАТЕЛЬ
, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_num_fields ()
Int без знака mysql_num_fields (MYSQL_RES *result)
Или
Int без знака mysql_num_fields (MYSQL *mysql)
Вторая форма не работает на MySQL 3.22.24 или более новый. Чтобы передавать параметр MYSQL*, Вы должны использовать int без знака mysql_field_count (MYSQL *mysql)
вместо этого.
Возвращает число столбцов в наборе результатов.
Обратите внимание, что Вы можете получить число столбцов или от указателя до набора результатов или к маркеру(дескриптору) подключения. Вы использовали бы маркер(дескриптор) подключения, если mysql_store_result ()
или mysql_user_result ()
возвращенный ПУСТОЙ УКАЗАТЕЛЬ
(и таким образом Вы не имеют никакого указателя набора результата). В этом случае(регистре), Вы можете вызывать(называть) mysql_field_count ()
чтобы определить, действительно ли mysql_store_result ()
должен был произвести не-пустой результат. Это позволяет программе клиента брать надлежащее действие без того, чтобы знать, действительно ли запрос был ВЫБОР
(или ВЫБОР-ПОДОБНЫЙ
) инструкция. Пример, показанный ниже иллюстрирует, как это может быть сделано.
Целое число без знака, представляющее число полей в наборе результатов.
Ни один.
MYSQL_RES *result; int без знака num_fields; int без знака num_rows; если (mysql_query(&mysql,query_string)) {// ошибка} еще // запрос следовал, процесс за любыми данными, возвращенными этим {результат = mysql_store_result(&mysql); если (результат) // имеются строки {num_fields = mysql_num_fields (результат); // отыскивают строки, затем звонят, mysql_free_result (результат)} еще // mysql_store_result () не возвратил ничто; это должно иметь? {Если (mysql_errno(&mysql)) {Fprintf (stderr, " Ошибка: %s\n ", mysql_error(&mysql)); } еще, если (mysql_field_count(&mysql) == 0) {// запрос не возвращает данные // (это не было ВЫБОР) num_rows = mysql_affected_rows(&mysql
Альтернатива (если Вы ЗНАЕТЕ, что ваш запрос должен был возвратить набор результатов) должна заменить mysql_errno(&mysql
) запрос с проверкой, если mysql_field_count(&mysql
) = 0. Это только случится, если кое-что пошло не так, как надо.
Mysql_num_rows ()
My_ulonglong mysql_num_rows (MYSQL_RES *result)
Возвращает число строк в наборе результатов.
Использование mysql_num_rows ()
зависит от того, используете ли Вы mysql_store_result ()
или mysql_use_result ()
чтобы возвратить набор результатов. Если Вы используете mysql_store_result ()
, mysql_num_rows ()
может называться немедленно. Если Вы используете mysql_use_result ()
, mysql_num_rows ()
не будет возвращать правильное значение, пока все строки в наборе результатов не были найдены.
Число строк в наборе результатов.
Ни один.
Mysql_options ()
Int mysql_options (MYSQL *mysql, перечисление mysql_option опция, символ константы *arg)
Может Использоваться, чтобы установить дополнительное пространство, соединяются(подключают) параметры и затрагивают поведение для подключения. Эта функция может называться множественными временами, чтобы установить несколько параметров.
Mysql_options ()
должен назваться после mysql_init ()
и прежде mysql_connect ()
или mysql_real_connect ()
.
Параметр опции
- опция, которую Вы хотите установить; параметр параметра
- значение для опции. Если опция - целое число, то параметр
должен указать на значение целого числа.
Возможные значения параметров:
Опция | Тип Параметра | Функция |
MYSQL_OPT_CONNECT_TIMEOUT |
Int без знака * |
Подключите блокировку времени мгновенно. |
MYSQL_OPT_COMPRESS |
Не используемый | Используйте сжатый протокол клиента / сервера. |
MYSQL_OPT_NAMED_PIPE |
Не используемый | Именованные каналы Использования, чтобы соединиться с MySQL сервером на NT. |
MYSQL_INIT_COMMAND |
Символ * |
Команда, чтобы выполниться при соединении с MySQL сервером. Будет автоматически заново Выполнен при пересоединении. |
MYSQL_READ_DEFAULT_FILE |
Символ * |
Читайте параметры от названного файла опции вместо от "my.cnf". |
MYSQL_READ_DEFAULT_GROUP |
Символ * |
Читайте параметры от названной группы от "my.cnf" или файла, указанного с MYSQL_READ_DEFAULT_FILE . |
Обратите внимание, что клиент
группы всегда читается, если Вы используете MYSQL_READ_DEFAULT_FILE
или MYSQL_READ_DEFAULT_GROUP
.
Указанная группа в файле опции может содержать следующие параметры:
Сжать |
Используйте сжатый протокол клиента / сервера. |
База данных |
Соединитесь с этой базой данных, если там никакая база данных не была определена в подключенной команде |
Отладка |
Параметры Отладки |
Главный компьютер |
Заданное по умолчанию имя хоста |
Init-команда |
Команда, чтобы выполниться при соединении с MySQL сервером. Будет автоматически заново Выполнен при пересоединении. |
Пароль |
Заданный по умолчанию пароль |
Канал |
Именованные каналы Использования, чтобы соединиться с MySQL сервером на NT. |
Порт |
Заданный по умолчанию портовый номер |
Return-found-rows |
Сообщите mysql_info () возвращаться найденный строками вместо модифицированных строк при использовании МОДИФИКАЦИИ . |
Разъем |
Заданный по умолчанию номер разъема |
Блокировка времени |
Подключите блокировку времени мгновенно. |
Пользователь |
Гипотетический пользователь |
Для получения дополнительной информации относительно файлов опции, см. раздел 4.15.4 файла Опции.
Нуль для успеха. Ненулевое, если Вы использовали неизвестную опцию.
MYSQL mysql;mysql_init(&mysql);mysql_options(&mysql,MYSQL_OPT_COMPRESS,0);mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc");if (! mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0)) {fprintf (stderr, " Не сумел соединяться с базой данных: Ошибка: %s\n ", mysql_error(&mysql));}
Вышеупомянутые запросы клиент, чтобы использовать сжатый протокол клиента / сервера и читают дополнительные параметры от odbc
раздела в my.cnf
файле.
Mysql_ping ()
Int mysql_ping (MYSQL *mysql)
Проверяет(отмечает), действительно ли подключение к серверу работает. Если это понизилось, автоматическое переподключение предпринято.
Эта функция может использоваться клиентурой, которая остается простоем для долго, проверять(отмечать), действительно ли сервер закрыл подключение и повторно соединяется в случае необходимости.
Нуль, если сервер действующий(жив). Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_UNKNOWN_ERROR
Mysql_query ()
Int mysql_query (MYSQL *mysql, символ константы *query)
Выполняет запрос SQL, указанный запросом
строки с нулевым символом в конце. Запрос должен состоять из одиночной инструкции SQL. Вы не должны добавить заканчивающуюся точку с запятой (";") или \g
к инструкции.
Mysql_query ()
не может использоваться для запросов, которые содержат данные в двоичном коде; Вы должны использовать mysql_real_query ()
вместо этого. (Данные в двоичном коде могут содержать "\0" символа, который mysql_query ()
интерпретируется как конец строки запроса.)
Нуль, если запрос был успешен. Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_real_connect ()
MYSQL *mysql_real_connect (MYSQL *mysql, символ константы *host, символ константы *user, символ константы *passwd, символ константы *db, int порт без знака, символ константы *unix_socket, int без знака client_flag)
Mysql_real_connect ()
пытается устанавливать подключение к MySQL двигателю базы данных, выполняющему на главном компьютере
. Mysql_real_connect ()
должен завершить успешно прежде, чем Вы можете выполнять любую из других функций API, за исключением mysql_get_client_info ()
.
Параметры определены следующим образом:
mysql_real_connect ()
Вы должны вызвать(назвать) mysql_init ()
чтобы инициализировать структуру MYSQL. См. пример ниже.
главного компьютера
может быть или имя хоста или АДРЕС IP. Если главный компьютер
НУЛЕВОЙ(ПУСТОЙ)
или строка "localhost"
, подключение к локальному главному компьютеру принято. Если OS поддерживает разъемы (Unix) или именованные каналы (Win32), они используются вместо TCP/IP, чтобы соединиться с сервером.
пользователя
содержит вход в систему пользователя МиСКЛ ИДЕНТИФИКАТОР. Если пользователь
НУЛЕВОЙ(ПУСТОЙ)
, текущий пользователь принят. Под Unix, это - текущее имя входящего в систему. Под Windows ODBC, текущее название(имя) пользователя должно быть определено явно. См. раздел 17.2, как заполнить различные поля в ODBC программе администратора.
Passwd
параметр содержит пароль для пользователя
. Если passwd
НУЛЕВОЙ(ПУСТОЙ)
, только входы в таблице пользователя
для пользователя, которые имеют пустое поле пароля, будет проверен соответствие. Это позволяет администратору базы данных устанавливать MySQL систему привилегии таким способом, что пользователи получают различные привилегии в зависимости от того, действительно ли они определили пароль. Обратите внимание: Не пытайтесь зашифровать пароль перед запросом mysql_real_connect ()
; кодирование пароля обработано автоматически клиентом API.
Db
- название(имя) базы данных. Если db
- не, ПУСТОЙ УКАЗАТЕЛЬ
, подключение установит заданную по умолчанию базу данных в это значение.
порт
- не 0, значение будет использоваться как портовый номер для TCP/IP подключения. Обратите внимание, что ведущий
параметр определяет тип подключения.
unix_socket
- не, ПУСТОЙ УКАЗАТЕЛЬ
, строка определяет разъем или именованный канал, который должен использоваться. Обратите внимание, что ведущий
параметр определяет тип подключения.
client_flag
- обычно 0, но может быть установлено в комбинацию следующих флажков в очень специальных обстоятельствах:
Название(имя) Флажка | Значение Флажка |
CLIENT_FOUND_ROWS |
Возвратите число найденных (согласованных) строк, не число воздействующихся строк |
CLIENT_NO_SCHEMA |
Не позволите db_name.tbl_name.col_name синтаксис. Это - для ODBC; Это заставляет синтаксический анализатор генерировать ошибку, если Вы используете тот синтаксис, который является полезным для заманивания в ловушку ошибок(дефектов) в некоторых программах ODBC. |
CLIENT_COMPRESS |
Протокол сжатия Использования |
CLIENT_ODBC |
Клиент - ODBC клиент. Это изменяет(заменяет) mysqld , чтобы быть более ODBC-ДРУЖЕСТВЕННЫМ. |
MYSQL*
подключение обработало бы, если подключение было успешно. ПУСТОЙ УКАЗАТЕЛЬ
, если подключение было неудачно. Для успешного подключения, возвращаемое значение - тот же самый как значение первого параметра, если Вы не передаете ПУСТОЙ УКАЗАТЕЛЬ
для того параметра.
CR_CONN_HOST_ERROR
CR_CONNECTION_ERROR
CR_IPSOCK_ERROR
CR_OUT_OF_MEMORY
CR_SOCKET_CREATE_ERROR
CR_UNKNOWN_HOST
CR_VERSION_ERROR
-
опция с старым протоколом
.
CR_NAMEDPIPEOPEN_ERROR;
CR_NAMEDPIPEWAIT_ERROR;
CR_NAMEDPIPESETSTATE_ERROR;
MYSQL mysql;mysql_init(&mysql);if (! mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0)) {fprintf (stderr, " Не сумел соединяться с базой данных: Ошибка: %s\n ", mysql_error(&mysql));}
Mysql_real_query ()
Int mysql_real_query (MYSQL *mysql, символ константы *query, int длина без знака)
Выполняет запрос SQL, указанный запросом, который должен быть байты длины
строки долго. Запрос должен состоять из одиночной инструкции SQL. Вы не должны добавить заканчивающуюся точку с запятой (";") или \g
к инструкции.
Вы должны использовать mysql_real_query ()
скорее чем mysql_query ()
для запросов, которые содержат данные в двоичном коде, так как данные в двоичном коде могут содержать "\0" символа. Кроме того, mysql_real_query ()
быстрее чем mysql_query ()
так как это не вызывает(называет) strlen ()
на строке запроса.
Нуль, если запрос был успешен. Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_reload ()
Int mysql_reload (MYSQL *mysql)
Просит, чтобы MySQL сервер перезагрузил таблицы предоставления. Связанный пользователь должен иметь привилегию перезагрузки.
Эта функция осуждается. Предпочтительно использовать mysql_query ()
чтобы выпустить инструкцию SQL FLUSH PRIVILEGES вместо этого.
Нуль для успеха. Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_row_seek ()
MYSQL_ROW_OFFSET mysql_row_seek (MYSQL_RES *result, MYSQL_ROW_OFFSET смещение)
Устанавливает курсор строки к произвольной строке в наборе результатов запросов. Это требует, чтобы структура набора результата содержала полный результат запроса, так что mysql_row_seek ()
может использоваться в конъюнкции только с mysql_store_result ()
, не с mysql_use_result ()
.
Смещение должно быть значение, возвращенное от запроса до mysql_row_tell ()
или к mysql_row_seek ()
. Это значение не просто номер строки; если Вы хотите искать на строку в пределах набора результатов, используя номер строки, используйте mysql_data_seek ()
вместо этого.
Предыдущее значение курсора строки. Это значение можно пропускать к последующему запросу к mysql_row_seek ()
.
Ни один.
Mysql_row_tell ()
MYSQL_ROW_OFFSET mysql_row_tell (MYSQL_RES *result)
Возвращает текущую позицию курсора строки для последнего(прошлого) mysql_fetch_row ()
. Это значение может использоваться как параметр к mysql_row_seek ()
.
Вы должны использовать mysql_row_tell ()
только после mysql_store_result ()
, не после mysql_use_result ()
.
Смещение тока(потока) курсора строки.
Ни один.
Mysql_select_db ()
Int mysql_select_db (MYSQL *mysql, символ константы *db)
Заставляет базу данных, указанную db
стать заданной по умолчанию (текущей) базой данных на подключении, указанном mysql
. В последующих запросах, эта база данных - значение по умолчанию для ссылок(справочников) таблицы, которые не включают явный спецификатор базы данных.
Mysql_select_db ()
терпит неудачу, если связанный пользователь не может быть заверен как наличие разрешения использовать базу данных.
Нуль для успеха. Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_shutdown ()
Int mysql_shutdown (MYSQL *mysql)
Спрашивает сервер базы данных на завершение. Связанный пользователь должен иметь привилегии завершения.
Нуль для успеха. Ненулевое, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_stat ()
Символ *mysql_stat (MYSQL *mysql)
Возвращает символьную строку, содержащую информацию, подобную обеспеченному mysqladmin
командой состояния
. Это включает полезное время мгновенно и число выполняющихся тематик, вопросов, перезагрузок и открытых таблиц.
Символьная строка, описывающая состояние сервера. ПУСТОЙ УКАЗАТЕЛЬ
, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_store_result ()
MYSQL_RES *mysql_store_result (MYSQL *mysql)
Вы должны вызвать(назвать) mysql_store_result ()
или mysql_use_result ()
для каждого запроса, который успешно отыскивает данные (ВЫБОР
, ПОКАЗ
, ОПИШИТЕ
, ОБЪЯСНИТЕ
).
Mysql_store_result ()
читает полный результат запроса клиенту, распределяет структуру MYSQL_RES, и размещает результат в эту структуру.
Пустой набор результатов возвращен, если не имеется никаких возвращенных строк. (Пустой набор результатов отличается от НУЛЕВОГО(ПУСТОГО)
возвращаемого значения.)
Как только Вы назвали mysql_store_result ()
, Вы можете вызывать(называть) mysql_num_rows ()
чтобы выяснить, сколько строк находятся в наборе результатов.
Вы можете вызывать(называть) mysql_fetch_row ()
чтобы выбрать строки от набора результатов, или mysql_row_seek ()
и mysql_row_tell ()
чтобы получить или установить текущую позицию строки в пределах набора результатов.
Вы должны вызвать(назвать) mysql_free_result ()
как только Вы сделаны с набором результатов.
MYSQL_RES
кончаются структура с результатами. ПУСТОЙ УКАЗАТЕЛЬ
, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_OUT_OF_MEMORY
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
Mysql_thread_id ()
Длинный mysql_thread_id без знака (MYSQL *mysql)
Возвращает тематику ИДЕНТИФИКАТОР текущего подключения. Это значение может использоваться как параметр к mysql_kill ()
чтобы уничтожить тематику.
Если подключение потеряно, и Вы повторно соединяетесь с mysql_ping ()
, тематика, ИДЕНТИФИКАТОР изменится. Это означает, что Вы не должны получить тематику ИДЕНТИФИКАТОР и хранить это для позже, Вы должны получить это, когда Вы нуждаетесь в этом.
Тематика ИДЕНТИФИКАТОР текущего подключения.
Ни один.
Mysql_use_result ()
MYSQL_RES *mysql_use_result (MYSQL *mysql)
Вы должны вызвать(назвать) mysql_store_result ()
или mysql_use_result ()
для каждого запроса, который успешно отыскивает данные (ВЫБОР
, ПОКАЗ
, ОПИШИТЕ
, ОБЪЯСНИТЕ
).
Mysql_use_result ()
инициализирует поиск набора результата, но фактически не читает, набор результатов в клиента подобно mysql_store_result ()
делает. Вместо этого, каждая строка должна быть найдена индивидуально, делая запросы к mysql_fetch_row ()
. Это читает результат запроса непосредственно от сервера без того, чтобы сохранить это во временной таблице или локальном буфере, который является несколько быстрее и использует намного меньше память чем mysql_store_result ()
. Клиент только распределит память для текущей строки и буфера связи, который может выращивать до max_allowed_packet
байтов.
С другой стороны, Вы не должны использовать mysql_use_result ()
если Вы делаете много обработки для каждой строки на стороне клиента, или если вывод послан экрану, на котором пользователь может напечатать ^S
(прокрутка останова). Это свяжет сервер и предотвратит другие тематики от обновления любых таблиц, от которых данные выбраны.
При использовании mysql_use_result ()
, Вы должны выполнить mysql_fetch_row ()
пока значение NULL не возвращено, иначе невыбранные строки будут возвращены как часть набора результатов для вашего следующего запроса. API C даст Команды
ошибки из синхронизации; Вы не можете выполнять эту команду теперь
, если Вы забываете делать это!
Вы не можете использовать mysql_data_seek ()
, mysql_row_seek ()
, mysql_row_tell ()
, mysql_num_rows ()
или mysql_affected_rows ()
с результатом, возвращенным от mysql_use_result ()
, и при этом Вы не можете выпускать другие запросы, пока mysql_use_result ()
не закончился. (Однако, после того, как Вы выбрали все строки, mysql_num_rows ()
точно возвратит число выбранных строк.)
Вы должны вызвать(назвать) mysql_free_result ()
как только Вы сделаны с набором результатов.
MYSQL_RES
кончаются структура. ПУСТОЙ УКАЗАТЕЛЬ
, если ошибка произошла.
CR_COMMANDS_OUT_OF_SYNC
CR_OUT_OF_MEMORY
CR_SERVER_GONE_ERROR
CR_SERVER_LOST
CR_UNKNOWN_ERROR
mysql_query ()
успех возвращений, mysql_store_result ()
иногда возвращает ПУСТОЙ УКАЗАТЕЛЬ?
Это возможно для mysql_store_result ()
чтобы возвратить ПУСТОЙ УКАЗАТЕЛЬ
после успешного запроса к mysql_query ()
. Когда это случается, это означает, что одно из следующих условий(состояний) произошло:
malloc ()
отказ(неудача) (например, если результат установленный был слишком большой).
ВСТАВКА
, ОБНОВЛЯТЬ(МОДИФИЦИРОВАТЬ)
или УДАЛЯТЬ
).
Вы можете всегда проверять(отмечать), действительно ли инструкция должна была произвести не-пустой результат, вызывая mysql_field_count ()
. Если mysql_field_count ()
нуль возвращений, результат пуст, и последний(прошлый) запрос был инструкция, которая делает не возвращаемые значения (например, ВСТАВКУ
или УДАЛЯЮЩИЙСЯ
). Если mysql_field_count ()
возвращает ненулевое значение, инструкция должна была произвести не-пустой результат. См. описание mysql_field_count ()
функция для примера.
Вы можете проверять на ошибку, вызывая mysql_error ()
или mysql_errno ()
.
В дополнение к результату устанавливают возвращенный запросом, Вы можете также получить следующую информацию:
Mysql_affected_rows ()
возвращает число строк, на которые воздействует последний(прошлый) запрос при выполнении ВСТАВКИ
, ОБНОВЛЯТЬ(МОДИФИЦИРОВАТЬ)
или УДАЛЯТЬ
. Исключение - то, что, если УДАЛЯЮТ
, используется без предложения WHERE, таблица усечена, который является намного быстрее! В этом случае(регистре), mysql_affected_rows ()
возвращает нуль для числа отчетов(рекордов), на которые воздействуют.
Mysql_num_rows ()
возвращает число строк в наборе результатов. С mysql_store_result ()
, mysql_num_rows ()
может называться, как только mysql_store_result ()
возвращается. С mysql_use_result ()
, mysql_num_rows ()
может называться только после того, как Вы выбрали все строки с mysql_fetch_row ()
.
Mysql_insert_id ()
возвращает ИДЕНТИФИКАТОР, сгенерированный последним(прошлым) запросом, который вставил строку в таблицу с индексом AUTO_INCREMENT
. См. раздел 21.4.29 mysql_insert_id ()
.
ДАННЫЕ ЗАГРУЗКИ INFILE ...
, ВСТАВЬТЕ В ..., ВЫБИРАЮТ ...
, ОБНОВЛЯЮТ(МОДИФИЦИРУЮТ)
) возвращают дополнительную информацию. Результат возвращен mysql_info ()
. См. описание для mysql_info ()
для формата строки, которую это возвращается. Mysql_info ()
возвращает указатель NULL, если не имеется никакой дополнительной информации.
Если Вы вставляете отчет(рекорд) в таблице, содержащей столбец, который имеет атрибут AUTO_INCREMENT
, Вы можете получить наиболее недавно сгенерированный ИДЕНТИФИКАТОР, вызывая mysql_insert_id ()
функция.
Вы можете также отыскивать ИДЕНТИФИКАТОР, используя LAST_INSERT_ID ()
функция в строке запроса, которую Вы проходите к mysql_query ()
.
Вы можете проверять(отмечать), используется ли индекс AUTO_INCREMENT
, выполняя следующий код. Это также проверяет(отмечает), был ли запрос ВСТАВКА
с индексом AUTO_INCREMENT
:
Если (mysql_error(&mysql)[0] == 0 && Mysql_num_fields (результат) == 0 && mysql_insert_id(&mysql)! = 0) {used_id = mysql_insert_id(&mysql);}
Наиболее недавно сгенерированный ИДЕНТИФИКАТОР поддерживается в сервере на основании " в связь ". Это не будет изменено(заменено) другим клиентом. Это не будет даже изменено(заменено), если Вы обновляете(модифицируете) другой столбец AUTO_INCREMENT с не-волшебным значением (то есть значение, которое - не ПУСТОЙ УКАЗАТЕЛЬ
и не 0
).
Если Вы хотите использовать ИДЕНТИФИКАТОР, который был сгенерирован для одной таблицы и вставлять это во вторую таблицу, Вы можете использовать инструкции SQL подобно этому:
ВСТАВЬТЕ В foo (авто, текстовый) ЗНАЧЕНИЯ (ПУСТОЙ УКАЗАТЕЛЬ, 'текст'); # Генерировать ИДЕНТИФИКАТОР, вставляя NULLINSERT В foo2 (идентификатор, текст) ЗНАЧЕНИЯ (LAST_INSERT_ID (), 'текст'); # Использовать ИДЕНТИФИКАТОР во второй таблице
При соединении с API C, следующие ошибки могут происходить на некоторых системах:
Gcc -g -o клиент test.o -L/usr/local/lib/mysql -lmysqlclient -lsocket -lnslUndefined сначала упомянутый символ в filefloor /usr/local/lib/mysql/libmysqlclient.a(password.o)ld: фатальный: Символ, ссылающийся на ошибки. Никакой вывод, записанный в клиент
Если это случается на вашей системе, Вы должны включить математическую библиотеку, добавляя -lm
к концу компилирующейся / связанной строки.
Клиент " " почти " безопасен по тематике. Самая большая проблема состоит в том, что подпрограммы в " net.c ', которые читают от разъемов, не безопасны по прерыванию. Это было сделано с мыслью, что Вы могли бы хотеть иметь вашу собственную тревогу, которая может ломать(нарушать) длинное чтение на сервер.
Стандартные библиотеки клиента не откомпилированы с параметрами тематики.
Чтобы получить безопасного по тематике клиента, используйте -lmysys
, -lstring
и -ldbug
библиотеки и net_serv.o
, который сервер использует.
При использовании связного клиента, Вы можете делать большое использование из подпрограмм в "thr_alarm.c" файле. Если Вы используете подпрограммы от mysys
библиотеки, единственная вещь Вы должны помнить, должен вызвать(назвать) my_init ()
сначала!
Все функции кроме mysql_real_connect ()
в настоящее время безопасны по тематике. Следующие примечания описывают, как компилировать безопасную по тематике библиотеку клиентов и использовать это безопасным по тематике способом. (Примечания ниже для mysql_real_connect ()
фактически обращаются к mysql_connect ()
также, но так как mysql_connect ()
осуждается, Вы должны использовать mysql_real_connect ()
так или иначе.)
Чтобы делать mysql_real_connect ()
безопасным по тематике, Вы должны перетранслировать библиотеку клиентов с этой командой:
Оболочка > CPPFLAGS =-DTHREAD_SAFE_CLIENT ./configure ...
Вы можете получить некоторые ошибки из-за неопределенных символов при соединении стандартного клиента, потому что pthread библиотеки не включены по умолчанию.
Заканчивающаяся "libmysqlclient.a" библиотека теперь безопасна по тематике. Что это означает - тот код клиента, безопасен по тематике, целых две тематики не сделают запрос того же самого маркера(дескриптора) подключения, возвращенного mysql_real_connect ()
в то же самое время; протокол клиента / сервера позволяет только один запрос одновременно на данном подключении. Если Вы хотите использовать множественные тематики на том же самом подключении, Вы должны иметь блокировку mutex вокруг вашего mysql_query ()
и mysql_store_result ()
вызывают(называют) комбинацию. Однажды mysql_store_result ()
готов, блокировка может быть выпущена, и другие тематики могут сделать запрос того же самого подключения. (Другими словами, различные тематики могут использовать различные указатели MYSQL_RES, которые были созданы с mysql_store_result ()
, пока они используют надлежащий протокол блокировки.) Если Вы программа с POSIX тематиками, Вы можете использовать pthread_mutex_lock ()
и pthread_mutex_unlock ()
чтобы устанавливать и выпустить блокировку mutex.
Если бы Вы использовали mysql_use_result ()
скорее чем mysql_store_result ()
, блокировка была бы должна окружить mysql_use_result ()
и запросы к mysql_fetch_row ()
. Однако, это действительно лучше для связной клиентуры, чтобы не использовать mysql_use_result ()
.
Этот раздел документирует Perl DBI
интерфейс. Прежний интерфейс назывался mysqlperl
. С тех пор DBI
/DBD
теперь - рекомендуемый интерфейс Perl, mysqlperl
устаревший и не зарегистрирован здесь.
DBI
с DBD:: mysql
DBI
- универсальный интерфейс для многих баз данных. Это означает, что Вы можете записывать сценарий, который работает с многими различными двигателями базы данных без изменения(замены). Вы нуждаетесь в Драйвере Базы данных (DBD) определенный для каждого типа базы данных. Для MySQL, этот драйвер называется DBD:: mysql
.
Для получения дополнительной информации на Perl5 DBI, пожалуйста посетите DBI
страницу сети, и читайте документацию:
http://www.symbolstone.org/technology/perl/DBI/index.html
Для получения дополнительной информации на Объектно-ориентированном Программировании (OOP) как определено в Perl5, см. Perl OOP страница:
http://language.perl.com/info/documentation.html
Инсталляционные команды для MySQL Perl поддержка даются в разделе 4.10 комментария инсталляции Perl.
DBI
Переносные DBI методы
Соединитесь |
Устанавливает подключение к серверу базы данных |
Разъединить |
Разъединяет от сервера базы данных |
Готовьтесь |
Готовит инструкцию SQL для выполнения |
Выполниться |
Выполняет подготовленные инструкции |
Делать |
Готовит и выполняет инструкцию SQL |
Кавычка |
Цитирует строку или значения BLOB, которые будут вставлены |
Fetchrow_array |
Выбирает следующую строку как массив полей. |
Fetchrow_arrayref |
Выбирает следующую строку как массив ссылки(справочников) полей |
Fetchrow_hashref |
Выбирает следующую строку как ссылка(справочники) к hashtable |
Fetchall_arrayref |
Выбирает все данные как массив массивов |
Конец |
Заканчивает инструкцию и позволять системным свободным ресурсам |
Строки |
Возвращает число строк, на которые воздействуют |
Data_sources |
Возвращает массив баз данных, доступных на localhost |
ChopBlanks |
Управляет, урезают ли fetchrow_* методы места(космоса) |
NUM_OF_PARAMS |
Число меток - заполнителей в подготовленной инструкции |
NULLABLE |
Который столбцы могут быть НУЛЕВЫЕ(ПУСТЫЕ) |
След |
Исполните рассмотрение для отладки |
MySQL-определенные методы
Insertid |
Самое последнее значение AUTO_INCREMENT |
Is_blob |
Который столбец является значениями BLOB |
Is_key |
Который столбцы являются клавишами(ключами) |
Is_num |
Который столбцы являются числовыми |
Is_pri_key |
Который столбцы являются первичными клавишами(ключами) |
Is_not_null |
Который столбцы CANNOT, быть НУЛЕВОЙ(ПУСТОЙ) . См. NULLABLE . |
Длина |
Максимальные возможные размеры столбца |
Max_length |
Максимальные размеры столбца фактически представляют в результате |
НАЗВАНИЕ(ИМЯ) |
Названия(имена) Столбца |
NUM_OF_FIELDS |
Число полей возвратился |
Таблица |
Таблица называет в возвращенном наборе |
Тип |
Все типы столбца |
Perl методы описаны более подробно в следующих разделах. Переменные, используемые для возвращаемых значений метода имеют эти значения:
$dbh
$sth
$rc
$rv
Переносные DBI методы
Соединитесь ($data_source, $username, $password)
подключенный
метод делать подключение базы данных к источнику данных. $data_source
значение должно начаться с DBI:DRIVER_NAME:
. Использования Примера подключают
с DBD:: mysql
драйвер:
$dbh = DBI- > соединяются ("DBI:mysql:$database", $user, $password); $dbh = DBI->connect("DBI:mysql:$database:$hostname ", $user, $password); $dbh = DBI->connect("DBI:mysql:$database:$hostname:$port ", $user, $password);Если пользователь называет, и-или пароль неопределен,
DBI
использует значения DBI_USER
и DBI_PASS
переменных среды, соответственно. Если Вы не определяете имя хоста, это значения по умолчанию к 'localhost'
. Если Вы не определяете портовый номер, это значения по умолчанию к значению по умолчанию MySQL порт (3306). От Msql-Mysql-modules
версии 1.2009, $data_source
значение позволяет некоторые модификаторы: Mysql_read_default_file=file_name
Mysql_read_default_group=group_name
[клиентов]
. Определяя mysql_read_default_group
опцию, заданная по умолчанию группа становится [group_name]
группой.
Mysql_compression=1
Mysql_socket =/path/to/socket
DBI
, Вы можете брать их от пользователя " ~ /.my.cnf ' файл опции вместо этого, пишущий ваш, чтобы соединиться(подключить)
запрос подобно этому:
$dbh = DBI- > соединяются ("DBI:mysql:$database". "; mysql_read_default_file=$ENV{HOME}/.my.cnf ", $user, $password);Этот запрос будет читать параметры, определенные для группы
[клиентов]
в файле опции. Если Вы хотели делать ту же самую вещь, но параметры использования, указанные для [perl]
группы также, Вы могли использовать это:
$dbh = DBI- > соединяются ("DBI:mysql:$database". "; mysql_read_default_file=$ENV{HOME}/.my.cnf ". "; mysql_read_default_group=perl ", $user, $password);
Разъединить
Разъединяющийся
метод разъединяет маркер(дескриптор) базы данных от базы данных. Это типично называется правом прежде, чем Вы выходите от программы. Пример:
$rc = $dbh- > разъединяют;
Готовьтесь ($statement)
($sth)
, который Вы можете использовать, чтобы вызвать выполняющийся
метод. Типично Вы обрабатываете инструкции SELECT (и инструкции SELECT-like типа ПОКАЗА
, ОПИСЫВАЕТЕ
и ОБЪЯСНЯЕТЕ
) посредством, готовят
и выполняются
. Пример:
$sth = $dbh- > готовятся ($statement) или умирают " Не может готовиться $statement: $dbh- > errstr\n ";
Выполниться
Выполняющийся
метод выполняет подготовленную инструкцию. Для инструкций не-выбора
, выполните
возвращения число строк, на которые воздействуют. Если на никакие строки не воздействуют, выполните
возвращения "0E0"
, который Perl обрабатывает как нуль, но расценивает как истина. Для инструкций SELECT, выполните
только запуски запрос SQL в базе данных; Вы должны использовать один из fetch_*
методов, описанных ниже, чтобы отыскать данные. Пример:
$rv = $sth- > выполняются или умирают " не может выполнять запрос: $sth- > errstr;
Делайте ($statement)
делайте
возвращения "0E0"
, который Perl обрабатывает как нуль, но расценивает как истина. Этот метод вообще используется для инструкций не-выбора
, которые не могут быть подготовлены заранее (из-за ограничений драйвера) или которые не нуждаются к выполненным больше чем однажды (вставки, удаляет, и т.д.). Пример:
$rv = $dbh- > делают ($statement) или умирают " Не может выполняться $statement: $dbh- > errstr\n ";
Кавычка ($string)
кавычки
используется, чтобы "выйти" любых специальных символов, содержащихся в строке и добавлять требуемые внешние кавычки. Пример:
$sql = $dbh- > кавычка ($string)
Fetchrow_array
В то время как (@row = $sth- > fetchrow_array) {печатают qw ($row [0] \t$row [1] \t$row [2] \n);}
Fetchrow_arrayref
В то время как ($row_ref = $sth- > fetchrow_arrayref) {печатают qw($row_ref->[0]\t$row_ref->[1]\t$row_ref->[2]\n);}
Fetchrow_hashref
В то время как ($hash_ref = $sth- > fetchrow_hashref) {печатают qw($hash_ref->{firstname}\t$hash_ref->{lastname}\t\ $hash_ref- > заголовок} \n);}
Fetchall_arrayref
Мой $table = $sth- > fetchall_arrayref или умирают " $sth- > errstr\n "; мой ($i, $j); для $i (0 .. $#{$table}) {для $j (0 .. $#{$table->[$i]}) {печатают " $table- > [$i] [$j] \t ";} печатают "\n";}
Конец
$rc = $sth- > конец;
Строки
не-выбор
выполняет
инструкцию. Пример:
$rv = $sth- > строки;
NULLABLE
$null_possible = $sth- > {NULLABLE};
NUM_OF_FIELDS
выбором
. Вы можете использовать это для проверки, возвратила ли инструкция результат: нулевое значение указывает инструкцию не-выбора
подобно ВСТАВКЕ
, УДАЛЯТЬ
или МОДИФИКАЦИЮ
. Пример:
$nr_of_fields = $sth- > {NUM_OF_FIELDS};
Data_sources ($driver_name)
'localhost'
. Пример:
@dbs = DBI- > data_sources ("mysql");
ChopBlanks
fetchrow_*
методы продвижение и конечные пробелы от возвращенных значений. Пример:
$sth- > {'ChopBlanks'} =1;
След ($trace_level)
След ($trace_level, $trace_filename)
следа
допускает или отключает рассмотрение. Когда вызвано как DBI
метод класса, это воздействует на рассмотрение для всех маркеров(дескрипторов). Когда вызвано, как база данных или инструкция обрабатывает метод, это воздействует на рассмотрение для данного маркера(дескриптора) (и любые будущие дочерние записи маркера(дескриптора)). Установка от $trace_level
до 2 обеспечивает детальную информацию следа. Установка от $trace_level
до 0 отключает рассмотрение. Вывод Следа идет к стандартному выводу ошибки по умолчанию. Если $trace_filename
определен, файл открыт в, добавляют в конец режим и выводят для всех прослеженных маркеров(дескрипторов), записан в тот файл. Пример:
DBI- > след (2); # Проследить everythingDBI- > след (2, "/tmp/dbi.out"); # Проследить все к /tmp/dbi.out$dth- > след (2); # Проследить эту базу данных handle$sth- > след (2); # Проследить этот операторный маркер(дескриптор)Вы можете также допускать рассмотрению
DBI
, устанавливая DBI_TRACE
переменную среды. Установка этого к числовому значению эквивалентна запросу DBI- > (значение)
. Установка этого к имени пути эквивалентна запросу DBI- > (2, значение)
. MySQL-определенные методы
Методы, показанные ниже MySQL-определенные и не часть DBI
стандарта. Несколько из них теперь осуждаются: is_blob
, is_key
, is_num
, is_pri_key
, is_not_null
, длина
, max_length
, и таблица
. Где DBI-СТАНДАРТ
альтернативы существуют, они отмечены ниже.
Insertid
AUTO_INCREMENT
MySQL, новые авто-увеличенные значения будут сохранены здесь. Пример:
$new_id = $sth- > {insertid};Как альтернатива, Вы можете использовать
$dbh- > {'mysql_insertid '}
.
Is_blob
БОЛЬШОЙ ДВОИЧНЫЙ ОБЪЕКТ
. Пример:
$keys = $sth- > {is_blob};
Is_key
$keys = $sth- > {is_key};
Is_num
$nums = $sth- > {is_num};
Is_pri_key
$pri_keys = $sth- > {is_pri_key};
Is_not_null
$not_nulls = $sth- > {is_not_null};
Is_not_null
осуждается; предпочтительно использовать атрибут NULLABLE
(описанный выше), так как это - DBI стандарт.
Длина
Max_length
длины
указывает максимальные возможные размеры, что каждый столбец может быть (как объявлено в описании таблицы). Массив max_length
указывает, что максимальные размеры фактически представляют в таблице результата. Пример:
$lengths = $sth- > {длина}; $max_lengths = $sth- > {max_length};
НАЗВАНИЕ(ИМЯ)
$names = $sth- > {НАЗЫВАЮТ};
Таблица
$tables = $sth- > {таблица};
Тип
$types = $sth- > {тип};
DBI
/DBD
информация
Вы можете использовать perldoc
команду, чтобы получить подробную информацию относительно DBI
.
Perldoc DBIperldoc DBI:: FAQperldoc DBD:: mysql
Вы можете также использовать pod2man
, pod2html
, и т.д., инструментальные средства, чтобы перевести к другим форматам.
И конечно Вы можете находить самым последним DBI
информацию в DBI
странице сети:
http://www.symbolstone.org/technology/perl/DBI/index.html
Каталог MySQL Contrib содержит Eiffel обертку, написанную Майклом Равицом.
Вы можете также находить это в: http://www.netpedia.net/hosting/newplayer/
Имеются 2, поддержал JDBC драйверы для MySQL (twz и драйвер мм). Вы можете находить копию их в http://www.mysql.com/Contrib. Поскольку документация консультируется с любой JDBC документацией, и драйверы имеют документацию для MySQL определенных особенностей.
PHP серверный, HTML внедренный язык созданий сценария, который может использоваться, чтобы создать динамические страницы сети. Это содержит поддержку для доступа к нескольким базам данных, включая MySQL. PHP может быть выполнена как отдельная программа, или откомпилирован как модуль для использования с Apache сервером сети.
Распределение и документация доступны в PHP website.
MySQL
. Это описано подробно в PHP руководстве.
Два API доступен в каталоге MySQL Contrib.
Каталог MySQL Contrib содержит интерфейс Питона, написанный Джозефом Скиннером.
Вы можете также использовать интерфейс Питона к iODBC, чтобы обратиться к MySQL серверу. MxODBC
МУЛЬТИПЛЕКСОР КАНАЛА СВЯЗИ в binevolve. Каталог Contrib содержит интерфейс МУЛЬТИПЛЕКСОРА КАНАЛА СВЯЗИ, который основан на 1.50 msqltcl.
Идите к первому, предыдущему, затем, последний(прошлый) раздел, оглавление.