文件首頁
MySQL 9.0 C API 開發者指南
下載本手冊
PDF (美式信紙) - 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));
}