文档首页
MySQL 8.4 C API 开发者指南
下载本手册
PDF (US Ltr) - 1.4Mb
PDF (A4) - 1.4Mb


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 结构,或 NULLNULL 返回值的含义取决于在 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");
}