適材適所

WindowsやPowerShellやネットワーク、IBMなどのシステム系の話など気になったことも載せているブログです。

【db2_columns】DB2からカラム名を取得する【PHP,DB2 for i】

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の使い方についての備忘録でした。

参考

PHP: db2_columns - Manual
PHP でのデータベース・メタデータ取得関数 (ibm_db2)