文档首页
MySQL 8.4 C API 开发者指南
下载本手册
PDF (US Ltr) - 1.4Mb
PDF (A4) - 1.4Mb


5.4.14 mysql_eof()

bool
mysql_eof(MYSQL_RES *result)

说明

此函数已被弃用。建议使用 mysql_errno()mysql_error() 代替。

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

如果从对 mysql_store_result() 的成功调用中获取结果集,则客户端会在一次操作中接收整个结果集。在这种情况下,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() 仅返回一个布尔值,而错误函数在发生错误时会指示错误原因。)

返回值

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

错误

无。

示例

以下示例显示了如何使用 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));
}