【问题标题】:Retrieving database rows as a hashmap检索数据库行作为哈希图
【发布时间】:2013-07-09 23:49:24
【问题描述】:

我是 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 看起来您需要为其提供一个主键来索引哈希值,而我并不总是拥有,所以我宁愿它只输出一个数组。

这可能吗?!

【问题讨论】:

    标签: perl dbi


    【解决方案1】:

    您需要 fetchall_arrayref,但需要一个参数。这会返回一个 hashrefs 的 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',
      },
      ...
    ],
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2013-06-25
      • 1970-01-01
      相关资源
      最近更新 更多