Spec-Zone .ru
спецификации, руководства, описания, API

21.8.10. C API Готовый Краткий обзор Функции Оператора

Функции, доступные для готовой обработки оператора, получаются в итоге здесь и описываются более подробно в более позднем разделе. См. Раздел 21.8.11, "API C Готовые Описания Функции Оператора".

Функция Описание
mysql_stmt_affected_rows() Возвращает число строк, измененных, удаленных, или вставленный готовым UPDATE, DELETE, или INSERT оператор
mysql_stmt_attr_get() Получает значение атрибута для готового оператора
mysql_stmt_attr_set() Устанавливает атрибут для готового оператора
mysql_stmt_bind_param() Данные приложения партнеров буферизуют с маркерами параметра в готовом SQL-операторе
mysql_stmt_bind_result() Данные приложения партнеров буферизуют со столбцами в наборе результатов
mysql_stmt_close() Освобождает память, используемую готовым оператором
mysql_stmt_data_seek() Ищет на произвольный номер строки в наборе результатов оператора
mysql_stmt_errno() Возвращает код ошибки для последнего выполнения оператора
mysql_stmt_error() Возвращает сообщение об ошибке для последнего выполнения оператора
mysql_stmt_execute() Выполняет готовый оператор
mysql_stmt_fetch() Выбирает следующую строку данных от набора результатов и возвращает данные для всех связанных столбцов
mysql_stmt_fetch_column() Данные выборки для одного столбца текущей строки набора результатов
mysql_stmt_field_count() Возвращает число столбцов результата для нового оператора
mysql_stmt_free_result() Освободите ресурсы, выделенные дескриптору оператора
mysql_stmt_init() Выделяет память для a MYSQL_STMT структура и инициализирует это
mysql_stmt_insert_id() Возвращает ID, сгенерированный для AUTO_INCREMENT столбец готовым оператором
mysql_stmt_next_result() Возвращается/инициирует следующий результат в выполнении многократного результата
mysql_stmt_num_rows() Возвращает количество строки из буферизованного набора результатов оператора
mysql_stmt_param_count() Возвращает число параметров в готовом операторе
mysql_stmt_param_metadata() (Метаданные возвращаемого параметра в форме набора результатов) В настоящий момент, эта функция ничего не делает
mysql_stmt_prepare() Готовит строку SQL-оператора к выполнению
mysql_stmt_reset() Сбрасывает буферы оператора в сервере
mysql_stmt_result_metadata() Возвраты подготовленные метаданные оператора в форме набора результатов
mysql_stmt_row_seek() Ищет на смещение строки в наборе результатов оператора, используя значение returnedfrom mysql_stmt_row_tell()
mysql_stmt_row_tell() Возвращает позицию курсора строки оператора
mysql_stmt_send_long_data() Отправляет длинные данные в блоках к серверу
mysql_stmt_sqlstate() Возвращает код ошибки SQLSTATE для последнего выполнения оператора
mysql_stmt_store_result() Получает полный набор результатов клиенту

Вызвать mysql_stmt_init() создать дескриптор оператора, тогда mysql_stmt_prepare() подготовить строку оператора, mysql_stmt_bind_param() снабжать данными параметра, и mysql_stmt_execute() выполнить оператор. Можно повториться mysql_stmt_execute() изменяя параметр оценивает в соответствующих буферах, предоставленных через mysql_stmt_bind_param().

Можно отправить текст или двоичных данных в блоках к использованию сервера mysql_stmt_send_long_data(). См. Раздел 21.8.11.26,"mysql_stmt_send_long_data()".

Если оператор является a SELECT или любой другой оператор, который производит набор результатов, mysql_stmt_prepare() также возвращает информацию о метаданных набора результатов в форме a MYSQL_RES набор результатов через mysql_stmt_result_metadata().

Можно предоставить буферное использование результата mysql_stmt_bind_result(), так, чтобы mysql_stmt_fetch() автоматически данные возвратов к этим буферам. Это - выборка строки строкой.

Когда выполнение оператора было завершено, закройте использование дескриптора оператора mysql_stmt_close() так, чтобы могли быть освобождены все ресурсы, связанные с этим.

Если Вы получили a SELECT метаданные набора результатов оператора, вызывая mysql_stmt_result_metadata(), следует также освободить использование метаданных mysql_free_result().

Шаги выполнения

Чтобы подготовить и выполнить оператор, приложение следует за этими шагами:

  1. Создайте готовый дескриптор оператора с mysql_stmt_init(). Чтобы подготовить оператор на сервере, вызвать mysql_stmt_prepare() и передайте это строка, содержащая SQL-оператор.

  2. Если оператор произведет набор результатов, вызвать mysql_stmt_result_metadata() получить метаданные набора результатов. Эти метаданные находятся самостоятельно в форме набора результатов, хотя отдельный от того, который содержит строки, возвращенные запросом. Набор результатов метаданных указывает, сколько столбцов находится в результате, и содержит информацию о каждом столбце.

  3. Установите значения любого использования параметров mysql_stmt_bind_param(). Все параметры должны быть установлены. Иначе, выполнение оператора возвращает ошибку или приводит к неожиданным результатам.

  4. Вызвать mysql_stmt_execute() выполнить оператор.

  5. Если оператор производит набор результатов, обяжите буферы данных использовать для того, чтобы получить значения строки, вызывая mysql_stmt_bind_result().

  6. Выберите данные в буферную строку строкой, вызывая mysql_stmt_fetch() неоднократно, пока больше строк не находится.

  7. Повторите шаги 3 - 6 по мере необходимости, изменяя значения параметра и повторно выполняя оператор.

Когда mysql_stmt_prepare() вызывается, протокол клиента/сервера MySQL выполняет эти действия:

Когда mysql_stmt_execute() вызывается, протокол клиента/сервера MySQL выполняет эти действия:

Когда mysql_stmt_fetch() вызывается, протокол клиента/сервера MySQL выполняет эти действия:

Если ошибка происходит, можно получить код ошибки оператора, сообщение об ошибке, и использование кода SQLSTATE mysql_stmt_errno(), mysql_stmt_error(), и mysql_stmt_sqlstate(), соответственно.

Готовое Журналирование Оператора

Для готовых операторов, которые выполняются с mysql_stmt_prepare() и mysql_stmt_execute() C API-функции, записи сервера Prepare и Execute строки к общему журналу запросов так, чтобы можно было сказать, когда операторы готовятся и выполняются.

Предположите, что Вы готовите и выполняете оператор следующим образом:

  1. Вызвать mysql_stmt_prepare() подготовить строку оператора "SELECT ?".

  2. Вызвать mysql_stmt_bind_param() связывать значение 3 к параметру в готовом операторе.

  3. Вызвать mysql_stmt_execute() выполнить готовый оператор.

В результате предыдущих вызовов сервер пишет следующие строки в общий журнал запросов:

Prepare  [1] SELECT ?Execute  [1] SELECT 3

Каждый Prepare и Execute строка в журнале тегируется с a [N] идентификатор оператора так, чтобы можно было отследить, из которых регистрируется подготовленный оператор. N положительное целое число. Если есть многократные готовые операторы, активные одновременно для клиента, N может быть больше чем 1. Каждый Execute строки показывают готовый оператор после замены значений данных для ? параметры.