$sth = $dbh->prepare($sql); $sth->execute(); $sth->{NAME};
Но как это сделать, когда:
$hr = $dbh->selectall_hashref($sql,'pk_id');
Там нет $sth, так как вы получите $sth->{NAME}?$dbh->{NAME} не существует.
$sth
$sth->{NAME}
$dbh->{NAME}
Когда вы смотрите на строку, вы всегда можете использовать keys %$row, чтобы узнать, какие столбцы она содержит. Они будут точно такими же, как NAME (если вы не измените FetchHashKeyName на NAME_lc или NAME_uc).
keys %$row
NAME
FetchHashKeyName
NAME_lc
NAME_uc
Вы всегда можете подготовить и выполнить дескриптор самостоятельно, получить из него имена столбцов, а затем передать дескриптор вместо sql в selectall_hashref (например, если вам нужны имена столбцов, но оператор может не возвращать строк).Хотя вы можете также вызвать fetchall_hashref для дескриптора оператора.