27.7.6.13 mysql_eof()

my_bool mysql_eof(MYSQL_RES *result)

Description

不推荐使用此功能。可以使用mysql_errno()mysql_error()

mysql_eof()确定是否已读取结果集的最后一行。

如果您从对mysql_store_result()的成功调用中获取了一个结果集,则 Client 端将通过一次操作接收整个结果集。在这种情况下,从mysql_fetch_row()返回NULL总是意味着已到达结果集的末尾,因此不必调用mysql_eof()。与mysql_store_result()一起使用时,mysql_eof()始终返回 true。

另一方面,如果您使用mysql_use_result()来启动结果集检索,则当您反复调用mysql_fetch_row()时,是从服务器一个接一个地获得结果集的行。因为在此过程中连接可能会发生错误,所以mysql_fetch_row()NULL返回值并不一定意味着正常到达结果集的末尾。在这种情况下,您可以使用mysql_eof()确定发生了什么。 mysql_eof()如果到达结果集的末尾,则返回非零值;如果发生错误,则返回零。

历史上,mysql_eof()早于标准 MySQL 错误函数mysql_errno()mysql_error()。由于这些错误函数提供的信息相同,因此建议不要使用mysql_eof(),因为它们已被弃用。 (实际上,它们提供了更多信息,因为mysql_eof()仅返回布尔值,而错误函数则指出发生错误的原因。)

Return Values

零成功。如果已到达结果集的末尾,则为非零值。

Errors

None.

Example

以下示例显示了如何使用mysql_eof()

mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result)))
{
    // do something with data
}
if(!mysql_eof(result))  // mysql_fetch_row() failed due to an error
{
    fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}

但是,您可以使用标准的 MySQL 错误函数来达到相同的效果:

mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result)))
{
    // do something with data
}
if(mysql_errno(&mysql))  // mysql_fetch_row() failed due to an error
{
    fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}