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, работающим с полями и обрабатывающим метаданные набора результатов, таким как:
После завершения работы со структурой метаданных набора результатов, освободите её, передав её в функцию 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.4, «Поддержка подготовленных вызовов процедур».
Набор результатов, возвращаемый функцией 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.