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() after 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()在执行语句 with 之后 使用语句处理程序 with 。mysql_stmt_execute()

返回值

MYSQL_RES结果结构 。NULL如果准备好的语句不存在元信息。

错误