レコードの取得
データベースへ接続できたらレコードを取得してみましょう。
レコードの取得 
さて、レコードの取得、というか SQL 文の発行には、pg_exec() を使います。
PHP では基本的に全て pg_exec() で SQL を発行します。
で、この関数により、SQL を発行したその結果セットを得ることが出来ます。
構文: 結果セット = pg_exec ( コネクションハンドル, SQL文 );
構文的にはこのようになります。例えばテーブル zaiko の全てのデータを取得するには...
----------------------------------------------------------------------------------------------------
$con = pg_connect("dbname=TEST") ; // データベースへ接続します
$SQL = "SELECT * FROM zaiko ;" ;
$result = pg_exec( $con, $SQL ) ; // SQL を発行し結果セットを得る
----------------------------------------------------------------------------------------------------
となります。これにより SELECT 文の結果が $result へ格納されま
レコードの表示 
さて、実はこのままではデータを表示することは出来ません。
通常先の $result を、例えば echo した場合、Resource id #2 などとしか表示してくれません。
仕方がないので、データは配列か、オブジェクトとして実際に取得します。
これには、pg_fetch_array() とか pg_fetch_object() とかを使います。
私は、オブジェクト指向プログラミングはあまり出来ませんが、なんとなく pg_fetch_object() の方を使うことが多いです。
また、これらのデータにアクセスするには、行カウンタが必要になります。
また、例えばデータをテーブルなどとして表示する場合、通常は繰り返しループなどを利用するので、
この際の終了条件となるレコードの総数をあらかじめ求めておく必要があります。
取得したレコード数を調べるには pg_numrows() を使います。
尚、pg_numrows() で取得するレコード数は1からカウントしていますが、レコードの取り出しは、0 から始まるので、
その辺に注意が必要です。
( 要するに行カウンタは 0 から始めないと最初のレコードが見かけ上欠損するということ )
ではまず、今出てきた関数の構文です。
構文1: 1レコード = pg_fetch_array ( 結果セット, 行番号 ) ;
構文2: 1レコード = pg_fetch_object ( 結果セット, 行番号 ) ;
構文3: レコード数 = pg_numrows ( 結果セット ) ;
で、データベースに接続し、データを取得してテーブルで表示するスクリプトとしてはこんな感じになります。
ここでは pg_fetch_object() を使用しています。
----------------------------------------------------------------------------------------------------
$con = pg_connect("dbname=TEST"); // データベースに接続
$result = pg_exec($con, "SELECT * FROM zaiko ;"); // クエリを発行
$rows = pg_numrows($result); // レコードの総数を取得
$row = 0; // 行カウンタを初期化
echo "<TABLE border=1><TR><TH>hinmei</TH><TH>zaiko</TH></TR>\n";
while( $row < $rows ){
$DATA = pg_fetch_object( $result, $row ); // 結果セットからレコードを1行取得する
echo "<TR><TD>{$DATA->hinmei}</TD><TD>{$DATA->zaiko}</TD></TR>\n";
// オブジェクトの場合は、変数名->カラム名 でそのカラムのデータを参照できます
$row ++; // 行カウンタを進める
}
echo "</TABLE>\n";
----------------------------------------------------------------------------------------------------
これで、テーブル zaiko 内の全データがテーブルで表示されます。
こんな感じかな (これは最初からHTMLです(^^;;;)。
| hinmei | zaiko |
| yellow | 60 |
| orange | 60 |
| white | 60 |
| black | 60 |
| blue | 60 |
| green | 100 |
| red | 75 |
実はPHP で使う場合の基本はこれで終りみたいな物です。更新や削除でも、結局は SQL 文を pg_exec()
で発行すれば良いだけなので、最終的にはどんな SQL を書くか、と言う事が問題なって来ます(^^;;;
|