Perl: Как получить имена полей при выполнении $ dbh-> selectall _ ..? - PullRequest
1 голос
/ 02 марта 2012
$sth = $dbh->prepare($sql);
$sth->execute();
$sth->{NAME};

Но как это сделать, когда:

$hr  = $dbh->selectall_hashref($sql,'pk_id');

Там нет $sth, так как вы получите $sth->{NAME}?$dbh->{NAME} не существует.

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

Когда вы смотрите на строку, вы всегда можете использовать keys %$row, чтобы узнать, какие столбцы она содержит. Они будут точно такими же, как NAME (если вы не измените FetchHashKeyName на NAME_lc или NAME_uc).

0 голосов
/ 03 марта 2012

Вы всегда можете подготовить и выполнить дескриптор самостоятельно, получить из него имена столбцов, а затем передать дескриптор вместо sql в selectall_hashref (например, если вам нужны имена столбцов, но оператор может не возвращать строк).Хотя вы можете также вызвать fetchall_hashref для дескриптора оператора.

...