MySQL.RU .:. Одобрено лучшими российскими программистами

Справочное руководство по MySQL

8.4.3.46 mysql_eof()

8.4.3.46 mysql_eof()

my_bool mysql_eof(MYSQL_RES *result)

8.4.3.47 Описание

Данная функция не рекомендуется. Вместо нее можно использовать функции mysql_errno() или mysql_error().

Функция mysql_eof() определяет, была ли данная строка последней из прочитанных в результирующем наборе данных.

Если результирующий набор получен путем успешного вызова функции mysql_store_result(), то данный клиент получает полный набор данных за одну операцию. В этом случае возврат NULL из mysql_fetch_row() всегда означает, что достигнут конец результирующего набора и нет необходимости в вызове функции mysql_eof(). При использовании совместно с mysql_store_result() функция mysql_eof() всегда будет возвращать TRUE.

С другой стороны, при использовании mysql_use_result() для инициализации извлечения результирующего набора, клиент получает строки набора с сервера поочередно при повторных вызовах функции mysql_fetch_row(). Поскольку в этом процессе может возникнуть ошибка в соединении, NULL, полученный от mysql_fetch_row(), не всегда означает что конец результата был достигнут корректно. В этом случае вы можете использовать mysql_eof(), чтобы выяснить, что же случилось. mysql_eof() вернет ненулевую величину, если конец результирующего набора был достигнут, и нуль, если произошла ошибка.

Исторически сложилось так, что mysql_eof() по своим задачам сходна со стандартными функциями обработки ошибок MySQL mysql_errno() и mysql_error(). Поскольку эти функции дают одну и ту же информацию, их использование более предпочтительно чем mysql_eof(), которая сейчас выведена из употребления (в действительности они предоставляют еще больше информации, т.к. mysql_eof() возвращает только булево значение, в то время как функции обработки ошибок сообщают причину, по которой ошибка произошла).

8.4.3.48 Возвращаемые значения

Нуль, если ошибок не произошло. Ненулевая величина, если конец результирующего набора данных достигнут.

8.4.3.49 Ошибки

Никаких.

8.4.3.50 Пример

Следующий пример иллюстрирует применение mysql_eof():

mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result)))
{
	// делаем что-то с данными
}
if(!mysql_eof(result)) // mysql_fetch_row() сбойнул из-за ошибки
{
	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)))
{
	// что-то делаем с данными
}
if(mysql_errno(&mysql)) // mysql_fetch_row() сбойнул из-за ошибки
{
fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}