Mysql的mysql_store_result/mysql_use_result,mysql_field_count/mysql_num_fields/mysql_num_rows函数区别
1 先参考以下文章,或者先看下面再回来理解
mysql_use_result()的用法实例
mysql_store_result()返回NULL的情况
mysql_num_fields与mysql_field_count的区别
2 总结
/*
1.
mysql_field_count,mysql_num_fields可认为一样,都返回字段值;只不过后者必须要有mysql_store_result/mysql_use_result的返回值MYSQL_RES支撑执行
mysql_num_rows:返回真实的行数.同样需要MYSQL_RES支撑执行.
三者区别:
1)执行insert,update,detele时,mysql_store_result/mysql_use_result无返回值(不会返回字段),.'.mysql_field_count=0,mysql_num_fields和
mysql_num_rows更不用说了,无参数(NULL)根本无法执行;
2)执行select,show等语句时:由于mysql_store_result/mysql_use_result必会返回字段值, .'.mysql_field_count必然会等于mysql_num_fields;
而mysql_num_rows等于真实的值,范围为[0,n],可以是0
总结:以上的判断均是依靠条件:1)执行的语句;2)mysql_store_result/mysql_use_result返回值判断
2.
mysql_store_result()返回NULL的情况:
1)有一个malloc()失败(例如,如果结果集合太大)。
2)数据不能被读取(发生在连接上的一个错误)。
3)查询没有返回数据(例如,它是一个INSERT、UPDATE或DELETE).
解决:可用mysql_field_count() == 0,为0则证明正常;否则出错打印mysql_error(&mysql).(只针对NULL的情况)
mysql_store_result()不为NULL的情况:
1)执行select,行数为空,列数必不为空;即执行select后,mysql_store_result必不为空.show同理
2)正常执行sql语句的返回结果
*/