関数リファレンス
   

関数

mysql_fetch_field()
次のフィールドの型を返す
   

書式

MYSQL_FIELD *mysql_fetch_field(*result)

MYSQL_RES *result; MYSQL RES構造体

戻り値

現在のフィールドの MYSQL_FIELD 構造体。フィールドが残っていない場合は NULL

エラー

無し
   

機能

結果セットの一つのフィールドの定義を MYSQL_FIELD 構造体として返します。結果セット内の全てのフィールドについて情報を取り出すには、この関数を繰り返し呼んでください。mysql_fetch_field() はフィールドが残っていないと NULL を返します。
mysql_fetch_field() は、新しい SELECT クエリを実行するたびに、最初のフィールドについての情報を返すようにリセットされます。 mysql_fetch_field() で返されるフィールドは mysql_field_seek() の呼び出しにも影響をうけます。

テーブルを SELECT するために mysql_query() を呼び、しかしまだ mysql_store_result() を呼んでいない場合、 mysql_fetch_field()BLOB フィールドの長さの問い合わせに使用すると、MySQL はデフォルトの blob 長 (8K bytes) を返します。 (8K サイズになるのは、MySQLBLOB の最大長を知らないからです。これはいつかコンフィグ可能になるべきです。) 一度結果セットを取り出せば、field->max_length は指定したクエリ内でのこのフィールドの最大値の長さを含みます。

mysql.hのMYSQL_FIELD構造体

typedef struct st_mysql_field {
    char *name; /* Name of column */
    char *table; /* Table of column if column was a field */
    char *def; /* Default value (set by mysql_list_fields) */
    enum enum_field_types type; /* Type of field. Se          mysql_com.h for types */
    unsigned int length; /* Width of column */
    unsigned int max_length; /* Max width of selected set */
    unsigned int flags; /* Div flags */
    unsigned int decimals; /* Number of decimals in field */
} MYSQL_FIELD;

フィールド名以外にタイプや長さなどをこのMYSQL_FIELD構造体から参照することが出来る。

変数の説明

char *name フィールド名
char *table テーブル名
char *def デフォルト値
enum enum_field_types type フィールドタイプ
unsigned int length 文字列長または範囲(数値の場合)
unsigned int max_length 最大文字列長または最大範囲
unsigned int flags
unsigned int decimals 小数点以下の桁数のフィールド
   

サンプル

//かねやんMySQLAdminより
// CListViewのカラムへ設定するサンプル
// myDataはmysql_real_connectでオープン済み
int i=0;
MYSQL_FIELD *fd;
MYSQL_RES *res;
LV_COLUMN listcol;

if(mysql_select_db(myData,"mysql") < 0)
      return;
if((res=mysql_list_fields(myData,"host",NULL))==NULL)
     return;
// すべてのフィールドを読むまで繰り返す
while(fd=mysql_fetch_field(res)){ 
    listcol.pszText = fd->name;   //フィールド名 
    listcol.cx = 100;
    listCtrl.InsertColumn(i,&listcol);
    i++;
}

mysql_list_fieldsのところと同じソースです。

Japanese MySQL Manualより抜粋