Где мой ассоциативный массив и как я могу получить к нему доступ, используя Perl DBI? - PullRequest
1 голос
/ 18 июня 2010

Я работаю с Perl и использую DBI. До сих пор я использовал -> fetchall_arrayref, чтобы получить результаты запроса к базе данных, и просто обращался к массиву с помощью цифровых клавиш. Однако я предпочитаю иметь доступ к записям по именам полей (ассоциативная выборка), а не по цифрам.

Как мне это сделать и каков правильный синтаксис для доступа к ключам?

Я бы предпочел что-то вроде:

$data[0]['name']

Вместо:

$data[0][1]

Рабочий раствор

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

Ответы [ 3 ]

5 голосов
/ 18 июня 2010

Вы можете использовать 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";
  }
5 голосов
/ 18 июня 2010

Считайте DBI документы .В частности, fetchall_hashref.

И вы должны также изучить синтаксис Perl, поскольку он не совпадает с PHP.

2 голосов
/ 18 июня 2010

Если вы сделаете fetchall_hashref(), вы получите хеш, который вы ищете. Ключами будут имена полей из базы данных. Я немного опоздал, и Джо понял, но это будет.

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