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