Spec-Zone .ru
спецификации, руководства, описания, API
|
Функции, доступные для готовой обработки оператора, получаются в итоге здесь и описываются более подробно в более позднем разделе. См. Раздел 22.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()
. См. Раздел
22.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()
.
Чтобы подготовить и выполнить оператор, приложение следует за этими шагами:
Создайте готовый дескриптор оператора с mysql_stmt_init()
. Чтобы подготовить оператор на сервере, вызвать mysql_stmt_prepare()
и
передайте это строка, содержащая SQL-оператор.
Если оператор произведет набор результатов, вызвать mysql_stmt_result_metadata()
получить метаданные набора результатов. Эти
метаданные находятся самостоятельно в форме набора результатов, хотя отдельный от того, который содержит
строки, возвращенные запросом. Набор результатов метаданных указывает, сколько столбцов находится в
результате, и содержит информацию о каждом столбце.
Установите значения любого использования параметров mysql_stmt_bind_param()
. Все параметры должны быть установлены. Иначе,
выполнение оператора возвращает ошибку или приводит к неожиданным результатам.
Вызвать mysql_stmt_execute()
выполнить оператор.
Если оператор производит набор результатов, обяжите буферы данных использовать для
того, чтобы получить значения строки, вызывая mysql_stmt_bind_result()
.
Выберите данные в буферную строку строкой, вызывая mysql_stmt_fetch()
неоднократно, пока больше строк не находится.
Повторите шаги 3 - 6 по мере необходимости, изменяя значения параметра и повторно выполняя оператор.
Когда mysql_stmt_prepare()
вызывается, протокол клиента/сервера MySQL выполняет эти действия:
Сервер анализирует оператор и передается хорошо состояние назад клиенту, присваивая ID оператора. Это также отправляет общее количество параметров, количества столбца, и его метаданных, если это - набор результатов ориентированный оператор. Весь синтаксис и семантика оператора проверяются сервером во время этого вызова.
Клиент использует этот ID оператора для дальнейших операций, так, чтобы сервер мог идентифицировать оператор из числа своего пула операторов.
Когда mysql_stmt_execute()
вызывается, протокол клиента/сервера MySQL выполняет эти действия:
Клиент использует дескриптор оператора и отправляет данные параметра серверу.
Сервер идентифицирует оператор, используя ID, обеспеченный клиентом, заменяет маркеры параметра данными, которыми недавно снабжают, и выполняет оператор. Если оператор производит набор результатов, сервер отсылает данные назад к клиенту. Иначе, это передается хорошо состояние и число строк, измененных, удаленных, или вставленный.
Когда mysql_stmt_fetch()
вызывается, протокол клиента/сервера MySQL выполняет эти
действия:
Клиент читает данные из текущей строки набора результатов и помещает это в буферы данных приложения, делая необходимые преобразования. Если буферный тип приложения - то же самое как тот из типа поля, возвращенного из сервера, преобразования являются прямыми.
Если ошибка происходит, можно получить код ошибки оператора, сообщение об ошибке, и использование кода SQLSTATE
mysql_stmt_errno()
, mysql_stmt_error()
, и mysql_stmt_sqlstate()
, соответственно.
Для готовых операторов, которые выполняются с mysql_stmt_prepare()
и mysql_stmt_execute()
C API-функции, записи сервера Prepare
и Execute
строки к общему журналу запросов так, чтобы можно было сказать, когда
операторы готовятся и выполняются.
Предположите, что Вы готовите и выполняете оператор следующим образом:
Вызвать mysql_stmt_prepare()
подготовить строку оператора "SELECT ?"
.
Вызвать mysql_stmt_bind_param()
связывать значение 3
к параметру в готовом операторе.
Вызвать mysql_stmt_execute()
выполнить готовый оператор.
В результате предыдущих вызовов сервер пишет следующие строки в общий журнал запросов:
Prepare [1] SELECT ?Execute [1] SELECT 3
Каждый Prepare
и Execute
строка в журнале тегируется с
a [
идентификатор оператора так, чтобы
можно было отследить, из которых регистрируется подготовленный оператор. N
]N
положительное целое число. Если есть многократные готовые операторы, активные одновременно для клиента, N
может быть больше чем 1. Каждый Execute
строки показывают готовый оператор после замены значений данных для ?
параметры.