[EMAIL PROTECTED] wrote:
>
> Hi all. My goal is to get a list of all field names and data types for
> those fields in any given table in a mysql database. From reading the
> DBI documentation, the only way I've been able to do this is by
> preparing and executing a query against a table first. Then I would use
> $sth->{NAME} and $sth->{TYPE} to get the field names and their
> respective data types. it looks like this:
>
> $sth = $dbh->prepare("SELECT * FROM $table") or die "Can't prepare
> statement!\n";
> $sth->execute or die "Can not execute statement!\n";
> @types = @{$sth->{TYPE}};
> @cols = @{$sth->{NAME}};
>
> This seams like wasted overhead since I don't use the results of the
> query. Also, since my query is "SELECT * FROM $table", which dumps all
> data in the table, you may understand my concern for wasted overhead
> when dealing with tables of a significant size.
>
> Is there a way to get table names and data types without executing a
> query? If not, is there a query I can use that will... say... only
> return the first row (without WHERE clauses), to minimize the overhead?
I'm not sure what your objection to WHERE clauses is... You could do
something like SELECT * FROM $table WHERE 0=1.
DBI also has table_info() and column_info() methods which might be useful to
you.
Ronald