../../image/benilogo.gifPHP4 について


PHP で PostgreSQL テーブルの フィールド名 を得るには。

 PHPのマニュアル pg_field_name

string pg_field_name ( resource result, int field_number) なのであるが、 field_number は 0 から始まる。

そうすると、最後がどこまでかを知る必要がある。 これには pg_num_field で出来るようです。
このテーブルのフィールド名を取得するには
参考データー
 select \d a_test6;
                Table "a_test6"
 Column |           Type           | Modifiers
--------+--------------------------+-----------
 a1     | character(10)            |
 a2     | character(10)            |
 a3     | timestamp with time zone |
 a4     | timestamp with time zone |
 a5     | interval                 |
Unique keys: a_test6_pkey


  • a1 から a5 までを知るには

基本的にはこのような構造になっている。
当然なんだけど、そのまんま書けば出来るのかどうか実際にやってみる。  実験
pg_field_name.php
<html>
<head><title>PHP-Example pg_field_name </title></head>
<body>
<?php

$mySQL = 'SELECT * FROM a_test6;';  //SQL SELECT文
$dbconn = @pg_connect("dbname=beniya");            // データベースに接続する
if ($dbconn == false) {                            // 接続の状態を確認する
  print("データベースに接続できませんでした。");
  exit;
}

?>
<H1>php  pg_field_name( )のテストです。</H1>
<HR>
<PRE>
まず最初にpg_num_field( )でフィールド数を取得する。<br>
このVersion では pg_numfields() です。<br>
これでフィールドの数を取得する。<br>
for文で pg_fieldname(フィールド数) でフィールド名を取得する。<br>
<?php

  echo '$dbconn =',"$dbconn  SQL = $mySQL  \n";
  $result = pg_exec($dbconn,$mySQL);       //SQLの発行

  $fcnt = pg_numfields($result);
  echo 'field Count = ',$fcnt,"\n";
  for ($i=0;$i < $fcnt; $i++){
     echo pg_fieldname($result,$i),"\n";
  };


  //echo $arr[0],$arr[1],$arr[2],$arr[3],"\n";

  echo("\n");
  //直接 $result を覗いてみる。
  echo $result,"\n";
?>

</PRE>

</body>
</html>

実行結果
  • a1〜a5 まで表示されている。


と、まぁ フィールド名は取得できるのだがこれも考えてみれば pg_fetchの Result Typeを BOTH あるいは省略で
取得すれば 何も このように Filed名を取得する必要はないかも知れない。

























目次に戻る

2005/02/06 start ********* Last Update 2006/11/11 15:50 JST

(C) Y.Kondou,2004,2006 All Rights, Reserved.
その他、お気づきの点がありましたら連絡先はこちらから