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
]
It is preferable to use SHOW COLUMNS FROM
instead of
tbl_name
mysql_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
Commands were executed in an improper order.
The MySQL server has gone away.
The connection to the server was lost during the query.
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.