6.4.23 mysql_stmt_result_metadata()
MYSQL_RES *
mysql_stmt_result_metadata(MYSQL_STMT *stmt)
Описание
mysql_stmt_result_metadata() используется для получения метаданных набора результатов для подготовленного запроса. Его использование требует, чтобы запрос, когда он выполняется с помощью mysql_stmt_execute(), генерировал набор результатов.
mysql_stmt_result_metadata() можно вызвать после подготовки запроса с помощью mysql_stmt_prepare() и перед закрытием обработчика запроса. Метаданные набора результатов, возвращаемые mysql_stmt_result_metadata(), представляют собой указатель на структуру MYSQL_RES, которую можно использовать для обработки метаинформации, такой как количество полей и информация об отдельных полях. Этот указатель на набор результатов можно передать в качестве аргумента любому из функций API, работающих с полями, которые обрабатывают метаданные набора результатов, например:
Если клиент подавил метаданные (как описано в Раздел 3.6.7, «Необязательные метаданные набора результатов»), структура MYSQL_RES имеет поле, содержащее количество полей, но не содержит никакой информации о полях.
Когда вы закончите с метаданными набора результатов, освободите его, передав его в mysql_free_result(). Это аналогично тому, как вы освобождаете структуру набора результатов, полученную в результате вызова mysql_store_result().
Если вы вызываете mysql_stmt_result_metadata() после mysql_stmt_prepare() но до mysql_stmt_execute(), типы столбцов в метаданных определяются оптимизатором. Если вы вызываете mysql_stmt_result_metadata() после mysql_stmt_execute(), типы столбцов в метаданных определяются фактически присутствующими в наборе результатов. В большинстве случаев они должны быть одинаковыми.
Если выполненный запрос является CALL запросом, он может генерировать несколько наборов результатов. В этом случае не вызывайте mysql_stmt_result_metadata() сразу после mysql_stmt_prepare(). Вместо этого проверьте метаданные для каждого набора результатов отдельно после вызова mysql_stmt_execute(). Пример этой техники см. в Разделе 3.6.5, «Поддержка подготовленных операторов CALL».
Набор результатов, возвращаемый mysql_stmt_result_metadata(), содержит только метаданные. Он не содержит результатов строк. Для получения результатов строк используйте обработчик запроса с mysql_stmt_fetch() после выполнения запроса с mysql_stmt_execute(), как обычно.
Значения возвращаемых данных
Структура результата MYSQL_RES. NULL, если для подготовленного запроса нет метаинформации.
Ошибки
-
Недостаточно памяти.
-
Произошла неизвестная ошибка.
Пример
См. пример в Разделе 6.4.11, «mysql_stmt_fetch()».
© 2025 Oracle
Licensed under the GPLv2 License.