2

私は 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、ハッシュにインデックスを付けるために主キーを提供する必要があるように見えますが、これは常に持っているとは限らないため、配列を出力するだけです。

これは可能ですか?

4

1 に答える 1

3

fetchall_arrayref が必要ですが、引数が必要です。これは、ハッシュリファレンスの配列リファレンスを返します:

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

ハッシュリファレンスに特定の列のみを含めることも選択できます。詳細については、ドキュメントを参照してください。

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

わかりやすくするために、おそらくそのデータ構造をより Perl に似た方法で書きたいと思うでしょう。Perl の list/array/arrayref を文書化するときは、配列のインデックス (0、1 など) を含めないでしょう (PHP はこの問題を少し混乱させます)。その連想配列)

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