我的关联数组在哪里以及如何使用 Perl DBI 访问它?

发布于 2024-09-06 08:51:22 字数 360 浏览 11 评论 0原文

我正在使用 perl 并使用 DBI。到目前为止,我一直在使用 ->fetchall_arrayref 来获取数据库查询的结果,并且仅通过数字键访问数组。但是,我更喜欢能够通过字段名称(关联获取)而不是数字来访问记录。

我该如何执行此操作?访问密钥的正确语法是什么?

我更喜欢这样的东西:

$data[0]['name']

而不是:

$data[0][1]

工作解决方案

my %data;
@{$data{$id}}{('name')} = 'something';

I'm working with perl, and using DBI. Up to now, I've been using ->fetchall_arrayref to get the results of a database query, and just accessing the array by numeric keys. However, I much prefer to be able to access records by the field names (associative fetch) than numeric.

How do I do this, and what is the correct syntax for accessing the keys?

I would prefer something like:

$data[0]['name']

Instead of:

$data[0][1]

Working Solution

my %data;
@{$data{$id}}{('name')} = 'something';

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我纯我任性 2024-09-13 08:51:22

阅读 DBI 文档。特别是 fetchall_hashref

而且您还应该学习 Perl 语法,因为它与 PHP 不同。

Read the DBI docs. Particularly, fetchall_hashref.

And you should also learn Perl syntax, as it's not the same as PHP.

人海汹涌 2024-09-13 08:51:22

您可以使用 selectall_arrayref 来实现此目的。以下是 DBI 联机帮助页中的示例:

您可能经常想要获取行数组,其中每行都存储为哈希值。
这可以简单地使用以下方法完成:

  my $emps = $dbh->selectall_arrayref(
      "SELECT ename FROM emp ORDER BY ename",
      { Slice => {} }
  );
  foreach my $emp ( @$emps ) {
      print "Employee: $emp->{ename}\n";
  }

You can use selectall_arrayref for this. Here's example from the DBI manpage:

You may often want to fetch an array of rows where each row is stored as a hash.
That can be done simple using:

  my $emps = $dbh->selectall_arrayref(
      "SELECT ename FROM emp ORDER BY ename",
      { Slice => {} }
  );
  foreach my $emp ( @$emps ) {
      print "Employee: $emp->{ename}\n";
  }
长途伴 2024-09-13 08:51:22

如果你执行fetchall_hashref(),那么你就会得到你正在寻找的哈希值。键将是数据库中的字段名称。我有点晚了,乔明白了,但它会的。

$data->{0}->{'field'};

If you do fetchall_hashref() then you get the hash you are looking for. The keys will be the field names from the database. I am a little late, and Joe got it, but it will be.

$data->{0}->{'field'};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文