vivion34 发表于 2015-12-27 08:43:48

perl下十种fetch数据的区别以及返回数据结构

  perl下十种fetch数据的区别以及返回数据结构
  1.fetchrow_array 提取下一行数据并将字段保存在数组中返回
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”) or die DBI->errstr;
  $sql=”select * from 115_users limit 10″;
  $sth=$dbh->prepare($sql);
  $rv=$sth->execute;
  while(@row_ary=$sth->fetchrow_array){
  dump(@row_ary);
  print “password: ” .$row_ary.”\n”;
  }
  
  输出内容:
  (
  1,
  “auto-gre-1\@ttlsa.com”,
  “Y9MoErtE+iZG5PkYHMJobhij58E”,
  “auto-gre-1″,
  )
  password: Y9MoErtE+iZG5PkYHMJobhij58E
  (
  2,
  “auto-gre-2\@ttlsa.com”,
  “UqHxPoLmKY7ClyCZaXPdHepjUOo”,
  “auto-gre-2″,
  )
  password: UqHxPoLmKY7ClyCZaXPdHepjUOo
  
  2.fetchrow_arrayref 提取下一行数据并返回一个包含字段值的引用数组
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”) or die DBI->errstr;
  $sql=”select * from ttlsa_user_00 limit 10″;
  $sth=$dbh->prepare($sql);
  $rv=$sth->execute;
  while($ary_ref=$sth->fetchrow_arrayref){
  dump($ary_ref);
  print “email: “.$$ary_ref.”\n”;
  }
  
  输出内容:
  [
  1,
  "auto-gre-1\@ttlsa.com",
  "Y9MoErtE+iZG5PkYHMJobhij58E",
  "auto-gre-1",
  ]
  email: auto-gre-1@ttlsa.com
  [
  2,
  "auto-gre-2\@ttlsa.com",
  "UqHxPoLmKY7ClyCZaXPdHepjUOo",
  "auto-gre-2",
  ]
  email: auto-gre-2@ttlsa.com
  
  3.fetchrow_hashref 提取下一行数据并返回一个包含字段名和字段值对的哈希引用
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”) or die DBI->errstr;
  $sql=”select * from ttlsa_user_00 limit 10″;
  $sth=$dbh->prepare($sql);
  $rv=$sth->execute;
  while ($hash_ref=$sth->fetchrow_hashref) {
  dump($hash_ref);
  print “password: ” . $$hash_ref{‘passwd’} . “\n”;
  }
  
  输出内容:
  {
  email => “auto-gre-1\@ttlsa.com”,
  passwd => “Y9MoErtE+iZG5PkYHMJobhij58E”,
  user_id => 1,
  user_name => “auto-gre-1″,
  }
  password: Y9MoErtE+iZG5PkYHMJobhij58E
  {
  email => “auto-gre-2\@ttlsa.com”,
  passwd => “UqHxPoLmKY7ClyCZaXPdHepjUOo”,
  user_id => 2,
  user_name => “auto-gre-2″,
  }
  password: UqHxPoLmKY7ClyCZaXPdHepjUOo
  
  4.fetchall_arrayref 取出所有行内容并返回包含每行字段值的引用数组
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”) or die DBI->errstr;
  $sql=”select * from ttlsa_user_00 limit 10″;
  $sth=$dbh->prepare($sql);
  $rv=$sth->execute;
  $ary_ref=$sth->fetchall_arrayref;
  dump($ary_ref);
  print “@$ary_ref\n”;
  foreach (@$ary_ref) {
  print “$_->\n”;
  }
  
  输出内容:
  [
  [
  1,
  "auto-gre-1\@ttlsa.com",
  "Y9MoErtE+iZG5PkYHMJobhij58E",
  "auto-gre-1",
  ],
  [
  2,
  "auto-gre-2\@ttlsa.com",
  "UqHxPoLmKY7ClyCZaXPdHepjUOo",
  "auto-gre-2",
  ],
  ]
  ARRAY(0x9e7f5d8) ARRAY(0x9e7f578)
  password: Y9MoErtE+iZG5PkYHMJobhij58E
  password: UqHxPoLmKY7ClyCZaXPdHepjUOo
  
  5.fetchall_hashref($key_field) 取出所有内容并返回每行字段名和字段值对的哈希引用
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”) or die DBI->errstr;
  $sql=”select * from ttlsa_user_00 limit 10″;
  $sth=$dbh->prepare($sql);
  $rv=$sth->execute;
  $hash_ref=$sth->fetchall_hashref(user_id);
  dump($hash_ref);
  print ‘-’ x 20 .”\n”;
  print $hash_ref->{’10′}->{‘email’}.”\n\n\n”;
  while (($user_id,$value)=each %$hash_ref){
  print “\$user_id: $user_id\n”;
  while (($key,$value1)=each %$value) {
  print “$key ==> $value1\n”;
  }
  }
  
  输出内容:
  {
  1 => {
  email => “auto-gre-1\@ttlsa.com”,
  passwd => “Y9MoErtE+iZG5PkYHMJobhij58E”,
  user_id => 1,
  user_name => “auto-gre-1″,
  },
  2 => {
  email => “auto-gre-2\@ttlsa.com”,
  passwd => “UqHxPoLmKY7ClyCZaXPdHepjUOo”,
  user_id => 2,
  user_name => “auto-gre-2″,
  },
  }
  ——————–
  auto-gre-10@ttlsa.com
  
  $user_id: 6
  passwd ==> ZWCagapChduSFnB2nJcQ3vOCYI4
  email ==> auto-gre-6@ttlsa.com
  user_id ==> 6
  user_name ==> auto-gre-6
  $user_id: 3
  passwd ==> 9YiNWIw1bjqEMrCOmbtwFBBqc3U
  email ==> auto-gre-3@ttlsa.com
  user_id ==> 3
  user_name ==> auto-gre-3
  
  融合prepare( ),execute( )和fetchrow_arrayref( )方法的操作:
  6.selectrow_array($statement) 返回一行数据的数组
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”,{ PrintError=>0, RaiseError=>1 }) or die DBI->errstr;
  $sql=”select * from ttlsa_user_00 limit 10″;
  @row_ary=$dbh->selectrow_array($sql);
  dump(@row_ary);
  my ($count,$max)=@row_ary=$dbh->selectrow_array(“select count(*),max(user_id) from ttlsa_user_00″);
  print “number: $count; max: $max\n”;
  
  输出内容:
  (
  1,
  “auto-gre-1\@ttlsa.com”,
  “Y9MoErtE+iZG5PkYHMJobhij58E”,
  “auto-gre-1″,
  )
  number: 10; max: 10
  
  7.selectrow_arrayref($statement) 返回一行数据的引用数组
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”,{ PrintError=>0, RaiseError=>1 }) or die DBI->errstr;
  $sql=”select * from ttlsa_user_00 limit 10″;
  $ary_ref=$dbh->selectrow_arrayref($sql);
  dump($ary_ref);
  $ary_ref=$dbh->selectrow_arrayref(“select count(*),max(user_id) from ttlsa_user_00″);
  my ($count,$max)=@$ary_ref;
  print “number: $count; max: $max\n”;
  
  输出内容:
  [
  1,
  "auto-gre-1\@ttlsa.com",
  "Y9MoErtE+iZG5PkYHMJobhij58E",
  "auto-gre-1",
  ]
  number: 10; max: 10
  
  8.selectrow_hashref($statement) 返回一行数据的字段名与字段值的哈希引用
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”,{ PrintError=>0, RaiseError=>1 }) or die DBI->errstr;
  $sql=”select * from ttlsa_user_00 limit 10″;
  $hash_ary=$dbh->selectrow_hashref($sql);
  dump($hash_ary);
  $hash_ary=$dbh->selectrow_hashref(“select count(*) as count ,max(user_id) as max from ttlsa_user_00″);
  print “number: $$hash_ary{‘count’}; max: $$hash_ary{‘max’}\n”;
  
  输出内容:
  {
  email => “auto-gre-1\@ttlsa.com”,
  passwd => “Y9MoErtE+iZG5PkYHMJobhij58E”,
  user_id => 1,
  user_name => “auto-gre-1″,
  }
  number: 10; max: 10
  
  9.selectall_arrayref($statement) 取出所有行并返回包含所有字段值的引用数组
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”,{ PrintError=>0, RaiseError=>1 }) or die DBI->errstr;
  $sql=”select * from ttlsa_user_00 limit 2″;
  $array_ary=$dbh->selectall_arrayref($sql);
  dump($array_ary);
  print “——————————\n”;
  foreach $row (@$array_ary){
  dump($row);
  print “——————————\n”;
  foreach $element (@$row) {
  print “‘$element’,”;
  }
  print “\n”;
  }
  
  输出内容:
  [
  [
  1,
  "auto-gre-1\@ttlsa.com",
  "Y9MoErtE+iZG5PkYHMJobhij58E",
  "auto-gre-1",
  ],
  [
  2,
  "auto-gre-2\@ttlsa.com",
  "UqHxPoLmKY7ClyCZaXPdHepjUOo",
  "auto-gre-2",
  ],
  ]
  ——————————
  [
  1,
  "auto-gre-1\@ttlsa.com",
  "Y9MoErtE+iZG5PkYHMJobhij58E",
  "auto-gre-1",
  ]
  ——————————
  ’1′,’auto-gre-1@ttlsa.com’,'Y9MoErtE+iZG5PkYHMJobhij58E’,'auto-gre-1′,
  [
  2,
  "auto-gre-2\@ttlsa.com",
  "UqHxPoLmKY7ClyCZaXPdHepjUOo",
  "auto-gre-2",
  ]
  ——————————
  ’2′,’auto-gre-2@ttlsa.com’,'UqHxPoLmKY7ClyCZaXPdHepjUOo’,'auto-gre-2′,
  
  10.selectall_hashref($statement,$key_field) 取出所有行并返回每行字段名和字段值对的哈希引用
  
  #!/usr/bin/perl
  ###################################
  ### author: www.ttlsa.com ###
  ### QQ群: 39514058 ###
  ### E-mail: service@ttlsa.com ###
  ###################################
  use DBI;
  use Data::Dump qw(dump);
  
  $driver=”DBI:mysql”;
  $host=”localhost:3306″;
  $dbname=”test”;
  $user=”root”;
  $passwd=”123456″;
  
  $dbh=DBI->connect(“$driver:$dbname:$host”,”$user”,”$passwd”,{ PrintError=>0, RaiseError=>1 }) or die DBI->errstr;
  $sql=”select * from ttlsa_user_00 limit 2″;
  $hash_ary=$dbh->selectall_hashref($sql,user_id);
  dump($hash_ary);
  print “——————————\n”;
  foreach $user_id (keys %$hash_ary) {
  print “user_id: $user_id\n”;
  print “user_name: $hash_ary->{$user_id}->{user_name}\n”;
  }
  
  输出内容:
  {
  1 => {
  email => “auto-gre-1\@ttlsa.com”,
  passwd => “Y9MoErtE+iZG5PkYHMJobhij58E”,
  user_id => 1,
  user_name => “auto-gre-1″,
  },
  2 => {
  email => “auto-gre-2\@ttlsa.com”,
  passwd => “UqHxPoLmKY7ClyCZaXPdHepjUOo”,
  user_id => 2,
  user_name => “auto-gre-2″,
  },
  }
  ——————————
  user_id: 1
  user_name: auto-gre-1
  user_id: 2
  user_name: auto-gre-2
页: [1]
查看完整版本: perl下十种fetch数据的区别以及返回数据结构