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_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");
}