6.4.5 mysql_stmt_bind_result()
my_bool
mysql_stmt_bind_result(MYSQL_STMT *stmt,
MYSQL_BIND *bind)
Описание
mysql_stmt_bind_result() используется для связывания (то есть привязки) выходных столбцов в наборе результатов с буферами данных и буферами длин. Когда вызывается mysql_stmt_fetch() для извлечения данных, протокол MySQL клиент/сервер помещает данные для привязанных столбцов в указанные буферы.
Все столбцы должны быть привязаны к буферам до вызова mysql_stmt_fetch(). bind — это адрес массива структур MYSQL_BIND. Библиотека клиента ожидает, что массив будет содержать один элемент для каждого столбца набора результатов. Если вы не привязываете столбцы к структурам MYSQL_BIND, mysql_stmt_fetch() просто игнорирует извлечение данных. Буферы должны быть достаточно большими, чтобы вместить значения данных, потому что протокол не возвращает значения данных частями.
Столбец можно привязать или перепривязать в любое время, даже после частичного извлечения набора результатов. Новая привязка вступает в силу при следующем вызове mysql_stmt_fetch(). Предположим, что приложение привязывает столбцы в наборе результатов и вызывает mysql_stmt_fetch(). Протокол клиент/сервер возвращает данные в привязанных буферах. Затем предположим, что приложение привязывает столбцы к другому набору буферов. Протокол помещает данные в новые привязанные буферы при следующем вызове mysql_stmt_fetch().
Чтобы привязать столбец, приложение вызывает mysql_stmt_bind_result() и передает тип, адрес и длину выходного буфера, в который должно быть сохранено значение. Раздел 6.2, «Структуры данных C API подготовленных операторов» описывает члены каждого элемента MYSQL_BIND и как их нужно установить для получения выходных значений.
Возвращаемые значения
Ноль в случае успеха. Неноль, если произошла ошибка.
Ошибки
-
Преобразование не поддерживается. Возможно, значение
buffer_typeнедействительно или не является одним из поддерживаемых типов. -
Нет памяти.
-
Произошла неизвестная ошибка.
Пример
См. пример в Разделе 6.4.11, «mysql_stmt_fetch()».
© 2025 Oracle
Licensed under the GPLv2 License.