関数リファレンス
   

関数

mysql_fetch_fields()
すべてのフィールドを構造体へ返す
   

書式

MYSQL_FIELD *mysql_fetch_fields(*result)

MYSQL_RES *result; MYSQL RES構造体

戻り値

結果セットの全ての項目の MYSQL_FIELD 構造体の配列

エラー

無し
   

機能

結果セットのすべての MYSQL_FIELD 構造体の配列を返します。各構造体は結果セットの一つのフィールドのフィールド定義を提供します。

mysql_fetch_field関数と似ているが、すべてのフィールド情報を一命令で実行できる。MYSQL_FIELD 構造体を配列にしているのが特徴。サンプルではfields=mysql_fetch_fields(result);でfieldsにポインタを渡している。各フィールドはfields[i].nameのようにすれば参照できる。

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 num_fields;
MYSQL_FIELD *fields;
MYSQL_RES *res;
LV_COLUMN listcol;

if(mysql_select_db(myData,"mysql") < 0)
      return;
if((res=mysql_list_fields(myData,"host",NULL))==NULL)
     return;
// すべてのフィールドを読むまで繰り返す
num_fields = mysql_num_fields(result); 
fields = mysql_fetch_fields(result);
for(int i=0;i<num;i++){ 

    listcol.pszText = fields[i].name;   //フィールド名 
    listcol.cx = 100;
    listCtrl.InsertColumn(i,&listcol);
}

Japanese MySQL Manualより抜粋