At 11:13 -0600 2/19/03, Paul DuBois wrote:
At 10:57 -0600 2/19/03, William R. Mattil wrote:
Hello,
I am having some cockpit trouble with the following
MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char *table, const char
*wild);
and it is like lack of understanding on my part. Syntax is:
if (mysql_list_fields( &mysql, "some table name", "some field name"))
mysql_store_result and mysql_fetch_row follow but nothing is ever
returned. If I replace the mysql_list_fields with:
if (mysql_query(&mysql,"Describe some_table_name"))
everything works. Where am I missing the boat here ?
Nothing. It's just that the documentation for this function is unclear/
incorrect. I just came to realize this myself a few weeks ago. :-(
The information that mysql_list_fields() returns about the columns is
returned in the result set *metadata*. So what you should do is call
mysql_fetch_field() to retrieve the metadata for each column of the result
set.
Note that the max_length value will always be zero.
Thanks
Bill
--
William R. Mattil | Statisticians define a lottery as a tax
Sr. System Aministrator | on not understanding mathematics
(972) 399-4106 |
To follow up on my own posting:
Here's an example. It shows how to retrieve various bits of metadata,
including the column metadata. It assumes tbl_name is a string
containing the table name.
MYSQL_ROW row;
MYSQL_FIELD *field;
unsigned long *length;
unsigned int i;
MYSQL_RES *res_set = mysql_list_fields (conn, tbl_name, NULL);
if (res_set == NULL)
fprintf (stderr, "list_fields failed\n");
else
{
printf ("Number of columns: %d\n", mysql_num_fields (res_set));
printf ("Number of rows: %d\n", mysql_num_rows (res_set));
printf (" %-12s %-12s", "name", "table");
printf (" %-12s %3s %3s %4s %4s %s\n",
"default", "len", "max", "type", "dec", "not null");
for (i = 0; i < mysql_num_fields (res_set); i++)
{
field = mysql_fetch_field (res_set);
printf ("%2u %-12s %-12s",
i,
field->name,
field->table ? field->table : "NULL");
printf (" %-12s %3u %3u %3u %3u %0x %3d\n",
field->def ? field->def : "NULL",
field->length,
field->max_length,
field->type,
field->decimals,
field->flags,
IS_NOT_NULL(field->flags)
);
}
}
mysql_free_result (res_set);
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php