RE: Possible to get field names and types in a table without executing a query?




brian.barto@xxxxxxxxxxxxxxxxxxx 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.

Tried it and it works just fine. I guess I specified no where clause
because I thought a value of a known field would have to be greater,
lesser, or equal to something and I wouldn't be able to depend on the
value of the fields, let alone even knowing their names. Didn't know you
could do THAT, though.

So what does "WHERE 0=1" actually mean? Just curious. :)

- Brian
.



Relevant Pages