$sth = $dbh->prepare($sql);
$sth->execute();
$sth->{NAME};
但你如何做到這一點的時候:
$hr = $dbh->selectall_hashref($sql,'pk_id');
有沒有$sth
,所以你怎麼弄的$sth->{NAME}
? $dbh->{NAME}
不存在。
$sth = $dbh->prepare($sql);
$sth->execute();
$sth->{NAME};
但你如何做到這一點的時候:
$hr = $dbh->selectall_hashref($sql,'pk_id');
有沒有$sth
,所以你怎麼弄的$sth->{NAME}
? $dbh->{NAME}
不存在。
當您查看連續行時,您始終可以使用keys %$row
找出它包含的列。它們將與NAME
完全相同(除非您將FetchHashKeyName
更改爲NAME_lc
或NAME_uc
)。
您可以隨時自行準備並執行該句柄,從中獲取列名,然後傳遞句柄而不是sql來選擇all_hashref(例如,如果需要列名,但語句可能不返回任何行)。儘管你可以在語句句柄上調用fetchall_hashref。
我輸出爲HTML表格。如果我正確理解你的話,你就是說要抓住任何記錄並使用該記錄中的密鑰。 – vol7ron 2012-03-02 15:36:43
是的。在$ hr上做一個Data :: Dumper,你會得到一個更好的主意 – 2012-03-02 15:40:27
@BillRuppert我理解這個想法。如果DBI將NAME數組加載到數據庫句柄(或者如果有一個我可以與之交互的全局語句句柄),我認爲我的問題不是解決方法,而是更多,因爲文檔說selectall取代了sth/prepare/execute 。 – vol7ron 2012-03-02 15:45:45