5.4.22 mysql_fetch_row()
MYSQL_ROW
mysql_fetch_row(MYSQL_RES *result)
Описание
mysql_fetch_row() — это синхронная функция. Её асинхронный аналог — mysql_fetch_row_nonblocking(), предназначенный для приложений, требующих асинхронного взаимодействия с сервером. См. Главу 7, C API Асинхронный интерфейс.
mysql_fetch_row() извлекает следующую строку из набора результатов:
При использовании после
mysql_store_result()илиmysql_store_result_nonblocking(),mysql_fetch_row()возвращаетNULL, если больше строк для извлечения нет.При использовании после
mysql_use_result(),mysql_fetch_row()возвращаетNULL, если больше строк для извлечения нет или произошла ошибка.
Количество значений в строке определяется функцией mysql_num_fields(result). Если row содержит результат вызова mysql_fetch_row(), то к значениям можно обратиться как к row[0] до row[mysql_num_fields(result)-1]. NULL значения в строке представлены указателями NULL.
Длины значений полей в строке могут быть получены с помощью вызова mysql_fetch_lengths(). Пустые поля и поля, содержащие NULL, имеют длину 0; вы можете отличить их, проверив указатель значения поля. Если указатель равен NULL, поле пустое (NULL); в противном случае поле пусто.
Значения возврата
Структура MYSQL_ROW для следующей строки или NULL. Значение возврата NULL зависит от функции, которая была вызвана до mysql_fetch_row():
При использовании после
mysql_store_result()илиmysql_store_result_nonblocking(),mysql_fetch_row()возвращаетNULL, если больше строк для извлечения нет.При использовании после
mysql_use_result(),mysql_fetch_row()возвращаетNULL, если больше строк для извлечения нет или произошла ошибка. Чтобы определить, произошла ли ошибка, проверьте, возвращает лиmysql_error()непустую строку илиmysql_errno()возвращает ненулевое значение.
Ошибки
Ошибки не сбрасываются между вызовами mysql_fetch_row()
-
Соединение с сервером было потеряно во время запроса.
-
Произошла неизвестная ошибка.
Пример
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i],
row[i] ? row[i] : "NULL");
}
printf("\n");
}
© 2025 Oracle
Licensed under the GPLv2 License.