DB2 for i 上のPHPサーバーでdb2_columns関数を使う機会があったので、そのときの備忘録です。
db2_columns関数とは
テーブルのカラムおよび関連するメタデータを含む結果セットを返す 『PHP: db2_columns - Manual』
PHPを使ってDB2上のテーブルの情報を得ることができます。
基本的な使い方
構文は次の通りとなっています。
db2_columns( resource $connection, string $qualifier = ?, string $schema = ?, string $table-name = ?, string $column-name = ? ): resource
$connectionはdb2_connectあたりで作成したDB2との接続を渡します。
$qualifierはi OS上のPHPサーバーなら、空文字(若しくはnull)を渡します。
$schemaはスキーマが複数ある場合に特定するために使用します。私の環境だと1つしか用意していなかったので、全てのスキーマに一致させる'%'を渡しました。
$table-nameはカラム名を取得したいテーブル名を渡します。
$column-nameは取得したいカラム名を絞りたいときに使うようですが、私は使うことがありませんでした。ちなみに私が実験したところ大文字小文字ありです。特に絞ることがない場合は、'%'を渡します。
上記をまとめると、基本的には下記のような指定になるかと思います。
$stmt=db2_columns($connection,'','%','テーブル名','%');
カラム名を取得するには
カラム名を取得するには、次のようにします。
$stmt=db2_columns($connection,'','%','テーブル名','%'); while ($row = db2_fetch_array($stmt)) { echo $row[3]; }
$row[3]のインデックス3が完全にマジックナンバーと化しています。
てっきり、$row['COLUMN_NAME']のように取得できると思ったら、うまく取得できず最終的に上記のようになりました。
IBMの公式(PHP でのデータベース・メタデータ取得関数 (ibm_db2))にあるコードでも思いっきりインデックスを指定してマジックナンバーとなっているのでこれでよしとしましょう。
以上、db2_columnsの使い方についての備忘録でした。