27.7.6.75 mysql_store_result()

MYSQL_RES *mysql_store_result(MYSQL *mysql)

Description

调用mysql_query()mysql_real_query()之后,必须为成功生成结果集的每个语句(SELECTSHOWDESCRIBEEXPLAINCHECK TABLE等等)调用mysql_store_result()mysql_use_result()。完成结果集后,还必须调用mysql_free_result()

您无需为其他语句调用mysql_store_result()mysql_use_result(),但是如果在所有情况下都调用mysql_store_result(),则不会造成任何损害或导致任何明显的性能下降。您可以通过检查mysql_store_result()是否返回非零值来检测该语句是否具有结果集(稍后会对此进行更多介绍)。

如果启用了多语句支持,则应该使用调用mysql_next_result()的循环来确定是否有更多结果,从而从对mysql_query()mysql_real_query()的调用中检索结果。有关示例,请参见第 27.7.15 节“ C API 多语句执行支持”

如果您想知道语句是否应返回结果集,则可以使用mysql_field_count()进行检查。参见第 27.7.6.22 节,“ mysql_field_count()”

mysql_store_result()向 Client 端读取查询的整个结果,分配MYSQL_RES结构,并将结果放入此结构中。

如果该语句未返回结果集(例如,如果它是INSERT语句),或者发生错误且结果集读取失败,则mysql_store_result()返回NULL

如果没有返回行,则返回空结果集。 (空结果集不同于空指针作为返回值.)

调用mysql_store_result()并返回非空指针的结果后,可以调用mysql_num_rows()来查找结果集中有多少行。

您可以调用mysql_fetch_row()从结果集中获取行,或者调用mysql_row_seek()mysql_row_tell()获取或设置结果集中的当前行位置。

See 第 27.7.20.1 节“为什么 mysql_store_result()有时在 mysql_query()返回成功后返回 NULL”.

Return Values

指向带有结果的MYSQL_RES结果结构的指针。 NULL,如果语句未返回结果集或发生错误。要确定是否发生错误,请检查mysql_error()返回非空字符串,mysql_errno()返回非零,还是mysql_field_count()返回零。

Errors

mysql_store_result()成功重置mysql_error()mysql_errno()

命令执行 Sequences 不正确。

记不清。

MySQL 服务器已经消失了。

在查询期间与服务器的连接已丢失。

出现未知错误。