WEB开发网
开发学院数据库MySQL Mysql入门系列:Perl DBI基础(2) 阅读

Mysql入门系列:Perl DBI基础(2)

 2006-12-31 10:49:46 来源:WEB开发网   
核心提示: 它不能正常工作,因为fetchrow_arrayref( ) 重新使用了引用指向的数组,Mysql入门系列:Perl DBI基础(2)(4),结果矩阵是一个引用的数组,数组中的每个元素都指向相同行—最后检索的行,但却做了更多工作的方法是selectall_arrayref( )

它不能正常工作,因为fetchrow_arrayref( ) 重新使用了引用指向的数组。结果矩阵是一个引用的数组,数组中的每个元素都指向相同行—最后检索的行。因此,如果想一次提取一行,则要使用fetchrow_array( ) 而不是fetchrow_arrayref( )。

另一个选择是使用提取循环,可以使用返回整个结果集的DBI 方法中的一个。例如,fetchall_arrayref( ) 返回对引用数组的引用,数组的每个元素都指向结果集中某行。这非常简单,但很有效,这个返回值是对矩阵的引用。要想使用fetchall_arrayref( ),则调用prepare( )和execute( ),然后如下检索结果:

如果结果集为空,则fetchall_arrayref( ) 返回一个对空数组的引用。如果出现错误,则结果为un d e f,所以如果没有启用R a i s e E r r o r,则在开始使用它以前,要确保检查返回值。

行数和列数由矩阵是否为空来确定。如果想作为一个数组访问这个矩阵的整个行$ i,应该使用语法@ { $ m a t r i x _ r e f - > [ $ i ] }。

使用fetchall_arrayref( ) 来检索结果集当然比编写一个提取行的循环要更简单一些,尽管访问数组元素的语法是一个小技巧。一个与fetchall_arrayref( ) 方法相类似,但却做了更多工作的方法是selectall_arrayref( )。这个方法为您完成了整个prepare( )、execute( )、提取循环、finish( ) 序列。为了使用selectall_arrayref( ),应该利用数据库句柄直接将查询传递给它:

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Mysql 入门 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接