my_bool mysql_eof(MYSQL_RES *result)
説明
この関数は廃止されています。代わりに
mysql_errno()
または
mysql_error()
を使用できます。
mysql_eof()
は、結果セットの最後のレコードが読み込まれたかどうかを判定します。
mysql_store_result()
を呼び出して結果セットを取得する場合、クライアントは
1
回の動作で結果セット全体を受け取ります。この場合、mysql_fetch_row()
を呼び出して戻り値が NULL
であれば、すでに結果セットの最後に到達していたことがわかるので、mysql_eof()
を呼び出す必要はありません。mysql_store_result()
と一緒に使用する場合、mysql_eof()
は常に true を返します。
一方、mysql_use_result()
を使用して結果セットの取得を開始した場合は、mysql_fetch_row()
を繰り返し呼び出すことによってそのレコードを
1
行ずつサーバから取得します。この手順を実行している途中で接続に異常が発生する場合があるので、mysql_fetch_row()
を呼び出して戻り値が NULL
であっても、それが必ずしも結果セットの最後に正常に到達したことを意味するわけではありません。この場合は、mysql_eof()
を使用することによって、どういう状況なのかを判断できます。mysql_eof()
は、結果セットの最後に到達していた場合は 0
以外、エラーが発生していた場合は 0
を返します。
mysql_eof()
は、歴史的には標準の
MySQL エラー関数である
mysql_errno()
および
mysql_error()
の前身です。これらのエラー関数は同じ情報を返すので、すでに廃止されている
mysql_eof()
よりも優先して使用してください(実際、mysql_eof()
が返すのはブール値だけで、エラー関数はエラー発生理由を示すより多くの情報を返します)。
戻り値
エラーが発生していない場合は 0。結果セットの最後に到達していた場合は 0 以外。
エラー
ありません。
例
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)); }
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.