Given an existing database handle and a string matching a table name, it returns a simple array of column names. No muss, no fuss.
Of course, if someone knows a Better Way, or sees an optimization for this code, by all means fire away!
EDIT: added use of map, cred to jhourcle
EDIT2: replaced use of column_info with a query which is about 40% more efficient. props to jZed for coming up with that.
# SYNTAX: getColumnList($dbh, "TestTable") sub getColumnList { # grab aliases to a DB handle and a table name my($dbh,$table) = @_; my $sth = $dbh->prepare("SELECT * FROM $table WHERE 1=0;"); $sth->execute; my @cols = @{$sth->{NAME}}; # or NAME_lc if needed $sth->finish; # return now complete list of columns for the given table return @cols; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: List columns for a MySQL table
by jZed (Prior) on Jun 28, 2006 at 16:55 UTC | |
by EvanK (Chaplain) on Jun 28, 2006 at 17:25 UTC | |
by jZed (Prior) on Jun 28, 2006 at 17:37 UTC | |
by EvanK (Chaplain) on Jun 28, 2006 at 18:38 UTC | |
|
Re: List columns for a MySQL table
by jhourcle (Prior) on Jun 28, 2006 at 16:32 UTC | |
|
Re: List columns for a MySQL table
by dbwiz (Curate) on Jun 29, 2006 at 13:04 UTC | |
|
Re: List columns for a MySQL table
by davorg (Chancellor) on Jun 29, 2006 at 13:25 UTC | |
by EvanK (Chaplain) on Jun 30, 2006 at 18:02 UTC |