Documentation Home
MySQL 5.7 Reference Manual
Related Documentation Download this Manual Excerpts from this Manual mysql_list_fields()

MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)


As of MySQL 5.7.11, mysql_list_fields() is deprecated and will be removed in a future version of MySQL. Instead, use mysql_query() to execute a SHOW COLUMNS statement.

Returns an empty result set for which the metadata provides information about the columns 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 tbl_name instead of 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.

int i;
MYSQL_RES *tbl_cols = mysql_list_fields(mysql, "mytbl", "f%");

unsigned int field_cnt = mysql_num_fields(tbl_cols);
printf("Number of columns: %d\n", field_cnt);

for (i=0; i < field_cnt; ++i)
  /* col describes i-th column of the table */
  MYSQL_FIELD *col = mysql_fetch_field_direct(tbl_cols, i);
  printf ("Column %d: %s\n", i, col->name);

Download this Manual
User Comments
  Posted by on July 21, 2003
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).
  Posted by Byung-Joon Lee on October 7, 2005
I think you should use mysql_fetch_fields() and mysql_num_fields() with this. mysql_fetch_row() does not work with this API.
  Posted by Byung-Joon Lee on October 7, 2005
plz use mysql_fetch_fields() and mysql_num_fields() with this API. do not use mysql_fetch_row(). It does not work.
  Posted by Bryan Su on August 8, 2006
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.

Sign Up Login You must be logged in to post a comment.