Spec-Zone.ru › MySQL Connectors 1.0

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.
https://docs.oracle.com/cd/E17952_01/c-api-8.4-en/mysql-fetch-row.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API