2012-03-02 17 views
1
$sth = $dbh->prepare($sql); 
$sth->execute(); 
$sth->{NAME}; 

但你如何做到這一點的時候:

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

有沒有$sth,所以你怎麼弄的$sth->{NAME}$dbh->{NAME}不存在。

回答

5

當您查看連續行時,您始終可以使用keys %$row找出它包含的列。它們將與NAME完全相同(除非您將FetchHashKeyName更改爲NAME_lcNAME_uc)。

+0

我輸出爲HTML表格。如果我正確理解你的話,你就是說要抓住任何記錄並使用該記錄中的密鑰。 – vol7ron 2012-03-02 15:36:43

+0

是的。在$ hr上做一個Data :: Dumper,你會得到一個更好的主意 – 2012-03-02 15:40:27

+0

@BillRuppert我理解這個想法。如果DBI將NAME數組加載到數據庫句柄(或者如果有一個我可以與之交互的全局語句句柄),我認爲我的問題不是解決方法,而是更多,因爲文檔說selectall取代了sth/prepare/execute 。 – vol7ron 2012-03-02 15:45:45

0

您可以隨時自行準備並執行該句柄,從中獲取列名,然後傳遞句柄而不是sql來選擇all_hashref(例如,如果需要列名,但語句可能不返回任何行)。儘管你可以在語句句柄上調用fetchall_hashref。

相關問題