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


PHP の pg_fetch_array( )関数 について。
pg_query関数

 PostgreSQL クエリーの発行  php マニュアル pg_fetch_array

まずは どういうふうに使うのかな?。 pg_fetch_array だけじゃあなく pg_fetch_all( これは PHP > 4.3.0 以上でないとダメ ) とか
いろいろな取り方があるようです。
この pg_fetch_array( ) は一行を配列として取り込むらしいので まずはこれから調べてみよう。
データーベースに接続 pg_connect  これらの処理をして、データーベースに接続し、SQL を発行した結果 $result にあるものとして
SQL を発行 pg_query pg_exec
  ---- 略 -----
<?php

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

  $arr = pg_fetch_array($result,0);
  if ($arr == false) {
     echo 'データーがありません';
     exit;
  };
  echo '$arr[0],$arr[2]として表示する。 ';
  echo $arr[0],$arr[1],$arr[2],$arr[3],"\n";
  echo '$arr["bhn_code"],$arr["bhn_name"]として表示する。 ';
  echo $arr["bhn_code"],$arr["bhn_name"],"\n";
  echo("\n");
  //直接 $result を覗いてみる。
  echo $result,"\n";
?>
   ---- 略 -----
   
    
beniya=# select bhn_code,bhn_name from bhnmst;
  bhn_code  |  bhn_name
------------+------------
 0000-0001  | テスト部品
(1 row)

    


 $mySQL に 設定。

 このようなデーター
 が返る。
実行結果: 以下が表示された。

$dbconn =Resource id #1  SQL = SELECT bhn_code,bhn_name FROM bhnmst;  
$arr[0],$arr[2]として表示する。 0000-0001 テスト部品
$arr["bhn_code"],$arr["bhn_name"]として表示する。 0000-0001 テスト部品


書式

 array pg_fetch_array ( resource result [, int row [, int result_type]])
引数の意味
resource result pg_query : pg_exec を発行した リソース この場合は $result
  int row       レコード番号 最初の位置は 0 から始まる。 データーがなければ 結果 $arr には false が返る。
int result_type PGSQL_ASSOC  result_type に指定すると配列の添え字がフィールド名でアクセスできる $arr[bhn_code]
PGSQL_NUM  result_type に指定すると配列の添え字が数値でアクセスできる $arr[0]
PGSQL_BOTH  Default なにも指定しないと上記の両方でアクセス出来る。 ( サンプルソース参照 )


$arr にはこんなイメージの配列が返る
row
0 1 2 3
bhn_code bhn_name bhn_???? bhn_xxxx
0 0000-0000 テスト部品  
1
2
3


  こんなイメージで
  この一行が返ってくる。従って
  $arr[0]  あるいは $arr["bhn_code"]は 0000-0001
  $arr[1]  あるいは $arr["bhn_name"]は テスト部品
  となります。


そうすると次のレコードを読み取るには int row を終わりまで ( pg_fetch_array( ) を繰り返して $arr が falseになるまで)
とすればいいことになる。 

  $row = 0;            //行カウンター
  while($arr = @pg_fetch_array($result,$row,PGSQL_NUM)){
                                            //添え字配列で受け取る。
        tbl_tag_body($arr); //ここで一行(1レコード分)の処理をする。
        $row++;
  };

  • @ を付けていないと EOFになったとき
    警告のメッセージを出力するようです。


警告のメッセージ
Warning: Unable to jump to row 3 on PostgreSQL result index 2 in Buhin_Mnt/bhn_disp03.php on line 28
 @ を付ければメッセージの出力を回避出来る。





















目次に戻る

2004/12/31start ********* Last Update 2006/11/11 15:32 JST

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