设为首页 收藏本站
查看: 1184|回复: 0

[经验分享] perl下十种fetch数据的区别以及返回数据结构

[复制链接]

尚未签到

发表于 2015-12-27 08:43:48 | 显示全部楼层 |阅读模式
  perl下十种fetch数据的区别以及返回数据结构
  1.fetchrow_array 提取下一行数据并将字段保存在数组中返回
  [codesyntax lang="perl"]
  #!/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[2].”\n”;
  }
  [/codesyntax]
  输出内容:
  (
  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 提取下一行数据并返回一个包含字段值的引用数组
  [codesyntax lang="perl"]
  #!/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[1].”\n”;
  }
  [/codesyntax]
  输出内容:
  [
  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 提取下一行数据并返回一个包含字段名和字段值对的哈希引用
  [codesyntax lang="perl"]
  #!/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”;
  }
  [/codesyntax]
  输出内容:
  {
  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 取出所有行内容并返回包含每行字段值的引用数组
  [codesyntax lang="perl"]
  #!/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 “$_->[2]\n”;
  }
  [/codesyntax]
  输出内容:
  [
  [
  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) 取出所有内容并返回每行字段名和字段值对的哈希引用
  [codesyntax lang="perl"]
  #!/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”;
  }
  }
  [/codesyntax]
  输出内容:
  {
  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) 返回一行数据的数组
  [codesyntax lang="perl"]
  #!/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”;
  [/codesyntax]
  输出内容:
  (
  1,
  “auto-gre-1\@ttlsa.com”,
  “Y9MoErtE+iZG5PkYHMJobhij58E”,
  “auto-gre-1″,
  )
  number: 10; max: 10
  
  7.selectrow_arrayref($statement) 返回一行数据的引用数组
  [codesyntax lang="perl"]
  #!/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”;
  [/codesyntax]
  输出内容:
  [
  1,
  "auto-gre-1\@ttlsa.com",
  "Y9MoErtE+iZG5PkYHMJobhij58E",
  "auto-gre-1",
  ]
  number: 10; max: 10
  
  8.selectrow_hashref($statement) 返回一行数据的字段名与字段值的哈希引用
  [codesyntax lang="perl"]
  #!/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”;
  [/codesyntax]
  输出内容:
  {
  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) 取出所有行并返回包含所有字段值的引用数组
  [codesyntax lang="perl"]
  #!/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”;
  }
  [/codesyntax]
  输出内容:
  [
  [
  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) 取出所有行并返回每行字段名和字段值对的哈希引用
  [codesyntax lang="perl"]
  #!/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”;
  }
  [/codesyntax]
  输出内容:
  {
  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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-156800-1-1.html 上篇帖子: LINUX下设置定时运行PERL脚本 下篇帖子: Perl 往子程序传递数组参数的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表