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