mysql_num_fields与mysql_field_count的区别

来源:互联网 发布:知行学院教务管理系统 编辑:程序博客网 时间:2024/06/05 20:15

mysql_num_fields和mysql_field_count都是获取结果中列的个数,但是这两个函数在使用的时候是存在区别的。

 

先看一段代码(上篇文章提供的数据库):

 

执行结果是:
--insert------------------------
insert----count_fields is 0
insert---store return null
---select-----------
select---count_fields is 2
select---num_fields is 2
select---num_rows is 7
---select 0------
select 0---count_fields is 2
select 0---num_fields is 2
select 0---num_rows is 0

 

显然,当执行insert语句的时候,是没有结果返回的,因此列的个数为0,且mysql_store_result返回NULL。因此可以通过mysql_field_count()是否返回0来判断是否有结果返回,而不需要执行mysql_store_result来判断是否返回了NULL。我想,mysql_field_count()的效率肯定要比mysql_store_result()高。

在这种情况下,由于没有返回结果,因此mysql_store_result()返回NULL,也就是得不到res指针,于是mysql_num_fields()函数就无法执行,缺少必要的参数。

 

当执行第一条select语句的时候,返回了结果,因此mysql_field_count()和mysql_num_fields()都返回了正确的列的个数2,mysql_num_rows()返回了记录的条数7.

 

当执行第二条select语句,由于表中没有 id = 0 的记录,因此mysql_num_rows返回了0表示记录数为0,但是,我们发现mysql_store_result()并没有返回NULL,mysql_num_fields()和mysql_field_count()还是返回了2.

 

因此我们可以得出这样的结论:

执行结果有三种情况,第一是执行insert、update和delete这样的语句的时候,是不会有任何内容返回,因此mysql_store_result()会返回一个NULL。第二,执行select或show这样的语句时,一定会有内容返回,可以取得列信息,但是记录可以为0,也可以不为0。这就像一个表,表头一定存在,但是表中可以没有数据。

 

另外:

mysql_affected_rows()函数的作用是,当执行update  insert  delete 时,返回影响的行数。

 

mysql中文文档:

http://dev.mysql.com/doc/refman/5.1/zh/apis.html

原创粉丝点击