2

我是 Perl 新手(主要是 PHP 背景),想知道我是否可以使用 DBI 在与 PHP 类似的输出中检索数据库行。这是一个包含散列的数组,散列名称作为数据库列名。即类似的东西:

[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看起来你需要为它提供一个主键来索引散列,我并不总是有,所以我宁愿它只输出一个数组。

这可能吗?!

4

1 回答 1

3

您需要 fetchall_arrayref,但需要一个参数。这将返回一个 hashref 的 arrayref:

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

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

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

为清楚起见,您可能希望以更类似于 Perl 的方式编写该数据结构 - 在记录 Perl 列表/数组/数组引用时,您不会包含数组索引(0、1 等)(PHP 将此事与它的关联数组)

[ {
   firstname => 'mark',
   surname   => 'smith',
  },
  {
   firstname => 'fred',
   surname   => 'baker',
  },
  ...
],
于 2013-07-09T08:50:51.210 回答