Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


23.8.7.42 mysql_list_fields()

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

説明

wild パラメータによって指定された簡単な正規表現に一致する、指定されたテーブル内のカラムに関する情報をメタデータで提供する空の結果セットを返します。wild にはワイルドカード文字 % または _ を含めることができ、またはすべてのフィールドに一致する NULL ポインタにできます。mysql_list_fields() の呼び出しは、クエリー SHOW COLUMNS FROM tbl_name [LIKE wild] の実行と似ています。

mysql_list_fields() の代わりに SHOW COLUMNS FROM tbl_name を使用することをお勧めします。

mysql_free_result() によって結果セットを解放する必要があります。

戻り値

成功した場合は MYSQL_RES 結果セット。エラーが発生した場合は NULL

エラー
  • CR_COMMANDS_OUT_OF_SYNC

    コマンドが正しくない順番で実行されました。

  • CR_SERVER_GONE_ERROR

    MySQL サーバーが存在しなくなりました。

  • CR_SERVER_LOST

    サーバーへの接続がクエリー中に失われました。

  • CR_UNKNOWN_ERROR

    不明なエラーが発生しました。

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);
}
mysql_free_result(tbl_cols);

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.