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()
は、結果セットの終わりに達した場合にゼロ以外の値を返し、エラーが発生した場合にゼロを返します。
歴史的に、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));
}