my $ref = $sth->fetchrow_hashref(); print "name=$ref->{'NAME'}, address=$ref->{'ADDR'}\n";執行結果:
name=, address=
會造成這樣的原因是因為大部分的資料庫,資料表的欄位名稱不分大小寫,而 perl 的 hash ,其 key 的部分是區分大小寫的,在這情況下會帶來不小的困擾,造成上面語法無法取得資料。
為了避免潛在大小寫不匹配的問題,必須透過 NAME_uc 或 NAME_lc 屬性來告知 fetchrow_hashref 強制欄位名稱為大寫或小寫。
my $ref = $sth->fetchrow_hashref('NAME_lc); # use lowercase namesor
my $ref = $sth->fetchrow_hashref('NAME_uc); # use uppercase namesperl 使用 DBI 來查詢資料庫資料,有好幾種函數可以使用,雖然這邊使用 fetchrow_hashref ,但他並不是最好的選擇,因為它的效率沒有像 fetchrow_array 或 fetchrow_arrayref 那麼好。
沒有留言:
張貼留言