日期:2014-05-16  浏览次数:20842 次

Mysql 的疑问
小第对一段程序不是很明白 程序如下
#include<my_global.h>
#include<mysql.h>
int main(int argc,char *argv)
{
MYSQL *conn;
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL_FIELD * field;
int num_fields;
int i;
conn=mysql_init(NULL);
mysql_read_connect(conn,"localhost","root","dingding","testdb",0,NULL,0);
mysql_query(conn,"select * fromo friends");
result=mysql_store_result(conn);
num_fields=mysql_num_fields(result);
while((row==mysql_fetch_row(result)))
{
for(i=0;i<mysql_num_fields(result))
{
if(i==0)
{
while(field=mysql_fetch_field(result))
{
printf("%s",field->name);
}
printf("\n");
}
printf("%s",row[i]?row[i]:"NULL");
}
}
mysql_free_result(result);
mysql_close(conn);
}
问题是:
按说mysql_fetch_row(result) 来检测下一行值是否存在,应该是有多少行记录就循环多少次,为什在打印字段的时候只是在
开始的时候打印一行字段名字呢 是不是field=mysql_fetch_field(result) 在打印完字段名字后 下次循环返回NULL
小弟这个地方确实搞不太懂,请高手指定.......

------解决方案--------------------
fetch_row获取一行,fetch_field获取一个字段,它们都是返回NULL表示结束。