将数据库行检索为哈希映射

时间:2013-07-09 08:44:17

标签: perl dbi

我是Perl的新手(主要是PHP背景),并想知道我是否可以像PHP一样使用DBI来检索数据库行。这是一个包含哈希的数组,哈希名称作为数据库列名。例如:

[0] -> {
    'firstname' -> 'mark',
    'surname' -> 'smith'
},
[1] -> {
    'firstname' -> 'fred',
    'surname' -> 'baker'
},
....

我试过了:

    my $ref = $stmt_datahub->fetchall_arrayref;
    print(Dumper($ref));

但是这并不是列的名称。即返回:

['mark', 'smith'], ['fred', 'baker']

并且fetchall_hashref看起来你需要为它提供一个主键来索引哈希值,我并不总是这样,所以我宁愿只输出一个数组。

这可能吗?!

1 个答案:

答案 0 :(得分:3)

你需要fetchall_arrayref,但有一个参数。这将返回hashrefs的arrayref:

my $results_arrayref = $dbh->fetchall_arrayref( {} );

您还可以选择仅在hashref中包含某些列 - 有关详细信息,请参阅文档:

https://metacpan.org/module/DBI#fetchall_arrayref

为了清楚起见,您可能希望以类似Perl的方式编写该数据结构 - 在记录Perl列表/数组/ arrayref时,您不会包含数组索引(0,1等)(PHP混淆了这个问题一点点关联数组)

[ {
   firstname => 'mark',
   surname   => 'smith',
  },
  {
   firstname => 'fred',
   surname   => 'baker',
  },
  ...
],
相关问题