最近用DBI模块写个了mysql接入函数,但得到的return一直不能输出结果,后来经过思考,原来是二维数组传递的问题,终于解决了,特此为记。
下面这个是mysql接入函数:
sub mysql_connect(){
use DBI;
my ($sql,$db)=@_;
my $usr="selectonly";
my $passwd="yuyin_110";
my $dbh=DBI->connect("DBI:mysql:$db",$usr,$passwd);
if(!$dbh){
print "connect lost\n";
}else{
my $sth=$dbh->prepare($sql)or die "Can’t prepare $sql: $dbh->errstr\n";
$sth->execute()or die "Can’t execute the query: $sth->errstr";
my $data=$sth->fetchall_arrayref();
$sth->finish;
return $data;
}
}
现在的问题是输出$data的内容,而$data返回的是一个二维数组的引用地址,可以用以下方法分层输出这个数组:
my $sql="select * from test limit 1000";
my $b=mysql_connect($sql,"test");
my @r=@$b; #####因为$b获得的只是一个引用地址,可以用@变成数组,这个数组这储存了一系列一维数组地址
foreach(@r){
my @each=@$_; ######道理与获得二维地址一样
foreach(@each){
print $_."\t";
}
print "\n";
}