27.7.6.21 mysql_fetch_row()
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
Description
mysql_fetch_row()检索结果集的下一行:
-
在mysql_store_result()之后使用时,如果没有更多行可检索,则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
;否则,该字段为空。
Return Values
下一行的MYSQL_ROW
结构,或NULL
。 NULL
返回的含义取决于在mysql_fetch_row()之前调用了哪个函数:
-
在mysql_store_result()之后使用时,如果没有更多行可检索,则mysql_fetch_row()返回
NULL
。 -
在mysql_use_result()之后使用时,如果没有更多行可检索或发生错误,则mysql_fetch_row()返回
NULL
。要确定是否发生错误,请检查mysql_error()是否返回非空字符串或mysql_errno()返回非零。
Errors
通话mysql_fetch_row()之间的错误不会重设
在查询期间与服务器的连接已丢失。
出现未知错误。
Example
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");
}