文件首頁
MySQL 8.4 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));
}