文档主页
MySQL 9.0 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));
}