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.6,“可选结果集元数据”),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 ()
,元数据中的列类型实际上出现在结果集中。在大多数情况下,它们应该是相同的。
如果被执行的语句是调用
语句时,它可能产生多个结果集。在这种情况下,不要打电话mysql_stmt_result_metadata ()
后立即mysql_stmt_prepare ()
.相反,应该在调用后分别检查每个结果集的元数据mysql_stmt_execute ()
.有关此技术的示例,请参见3.6.4节,“准备好的CALL语句支持”.
返回的结果集mysql_stmt_result_metadata ()
只包含元数据。它不包含任何行结果。要获得行结果,请使用语句处理程序mysql_stmt_fetch ()
在执行with语句之后mysql_stmt_execute ()
,像往常一样。
内存不足。
发生未知错误。