MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char
*table, const char *wild)
Description
Returns a result set consisting of field names in the given
table that match the simple regular expression specified by the
wild parameter. wild may
contain the wildcard characters
‘%’ or
‘_’, or may be a
NULL pointer to match all fields. Calling
mysql_list_fields() is similar to executing
the query SHOW COLUMNS FROM
.
tbl_name [LIKE
wild]
Note that it's recommended that you use SHOW COLUMNS
FROM instead of
tbl_namemysql_list_fields().
You must free the result set with
mysql_free_result().
Return Values
A MYSQL_RES result set for success.
NULL if an error occurred.
Errors
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order.
CR_SERVER_GONE_ERROR
The MySQL server has gone away.
CR_SERVER_LOST
The connection to the server was lost during the query.
CR_UNKNOWN_ERROR
An unknown error occurred.

User Comments
While I understand the theory of why it's suggested to us "SHOW COLUMNS" over mysql_list_fields, I wouldn't suggest it. The "SHOW COLUMNS" leaves with a result set that you have to parse and interpret, while mysql_list_fields will give you access to the MYSQL_FIELD structures (which of course then lend to all of the flag comparisons as well as definition types).
I think you should use mysql_fetch_fields() and mysql_num_fields() with this. mysql_fetch_row() does not work with this API.
plz use mysql_fetch_fields() and mysql_num_fields() with this API. do not use mysql_fetch_row(). It does not work.
mysql_list_field is nothing but "SELECT * FROM Tablename" command. But it is not a "SELECT". "SELECT" will cause SQL to list the table out according to what you want to view. But "mysql_list_field" will not do that, but what it will do is to point the pointer to a particular "DATABASE" and "TABLE".
Once the pointer is there, then you can use "mysql_field_name" to get all the name of the field from the selected table.
If you use "SELECT" command and then use the "mysql_field_name", you can still get the name of the field, but different is "SELECT" will cause some time to execute as "mysql_list_field" is only to point a pointer to the particular table. That's why it's fast.
Add your own comment.