Mysql入门系列:如何处理MYSQL查询
2006-12-31 10:51:22 来源:WEB开发网偏移由mysql_store_result() 引起的额外内存需求对一次访问整个结果集带来相当的好处。结果集中的所有行都是有效的,因此,可以任意访问: mysql_ data _ seek( )、mysql_ rowseek( )和mysql_row_tell() 函数允许以任意次序访问行。而mysql_use_result() 只能以mysql_fetch_row() 检索的顺序访问行。如果想要以任意次序而不是从服务器返回的次序来处理行,就必须使用mysql_ store _ result( )。例如,如果允许用户来回地浏览查询所选的行,最好使用mysql_ store _ result( )。
使用mysql_store_result() 可以获得在使用mysql_use_result() 时是无效的某些类型的列信息。通过调用mysql_num_rows() 来获得结果集的行数,每列中的这些值的最大宽度值存储在MYSQL_FIELD 列信息结构的max_width 成员中。使用mysql_ use _ result( ),直到提取完所有的行,mysql_num_rows() 才会返回正确值,而且max_width 无效,因为只有在每行的数据都显示后才能计算。
由于mysql_use_result() 比mysql_store_result() 执行更少的操作,所以mysql_ use _ result( )就强加了一个mysql_store_result() 没有的需求:即客户机对结果集中的每一行都必须调用mysql_ fetch _ row( ),否则,结果集中剩余的记录就会成为下一个查询结果集中的一部分,并且发生“不同步”的错误。这种情形在使用mysql_store_result() 时不会发生,因为当函数返
回时,所有的行就已被获取。事实上,使用mysql_store_result() 就不必再自己调用mysql_ fetch _ row( )。对于所有感兴趣的事情就是是否得到一个非空的结果,而不是结果所包含的内容的查询来说,它是很有用的。例如,要知道表my_tbl 是否存在,可以执行下面的查询:
更多精彩
赞助商链接