初心者用PHP入門へようこそ 当HPは初心者のためにPHPを解説しています。

- 初心者用PHP入門 -



PHPの本
よくわかるPHPの教科書

ノンプログラマに最適。「誰にでも伝わる教え方」で、最初の一歩から実用レベルまで解説しました。「プログラミングに拒否感がある」「他の入門書で挫折したことがある」そんな方でもこの本ならスイスイ読めます。
PHPの本
PHP 逆引きレシピ

いまさら聞けない・誰も教えてくれない本当に必要な知識と技を一冊に凝縮。困ったときにすぐ引ける!実践で即役立つテクニックと開発ノウハウ、つまづきやすい・ハマりやすいポイントを徹底解説。Windows/Mac対応 PHP5.3対応。
PHPの本
PHPによるWebアプリケーションスーパーサンプル 第2版

PHPスクリプティングの決定版サンプル集が最新のPHP5に対応して登場。実用的なサンプルを自力で動かす感動を通して、PHPの使い方や実装方法が自然と身に付きます。

PHPとPostgreSQL連携

 ここではPHPとPostgreSQLの連携について説明します。 PHPからデータベースに接続して、データベース内の情報を取得してみましょう。

 前章で作成したproductsテーブルから、 product_name列の値を検索条件として特定の情報を取得させます。 下記の表ではpostgresql_view.phpというファイルに POST属性で検索に利用するデータを渡しています。 フォームの扱い方についてはこちらをご参照ください。

<html>
<head><title>postgresql_search.html</title></head>
<body>
検索条件を入力してみましょう。
<form action="postgresql_view.php" method="post">
<table border="1">
  <tr>
    <td>製品名</td>
    <td><input type="text" name="product_name"></td>
    <td colspan="2" align="center">
    <input type="submit" value="検索"></td>
  </tr>
</table>
</body>
</html>

 次に、データベースへの接続、php_form.htmlのフォームから渡されたデータを利用して データベースのデータ検索を行います。 ここでは、検索結果のヒット件数と、ヒットした行のproduct_no、product_name、priceの情報を出力します。

<html>
<head><title>postgresql_view.php</title></head>
<body>
<?php

  // PostgreSQL 接続をオープンする
  $dbconn = pg_connect("port=5432 user=postgres password=postgres dbname=postgres");
  // SQL文の作成
  $sql = "SELECT product_no, product_name, price FROM products WHERE product_name = $1";
  // SQLとパラメータを分割して実行
  $result = pg_query_params($dbconn, $sql, array($_POST['product_name']));
  
  // SQL実行結果の行数を返す
  $cnt = pg_numrows($result);
  print("$cnt 件ヒットしました。<br />");
  
  for ($i = 0; $i < $cnt; $i++) {
    // 実行結果のi行目の行情報を取り出す
    $row = pg_fetch_row($result, $i);
    print("product_no:$row[0] product_name:$row[1] price:$row[2]");
  }

  // PostgreSQL 接続をクローズする
  pg_close($dbconn);

?>
</body>
</html>

 ここで利用している各関数について以下に説明します。

 PHPからPostgreSQLに接続するには「pg_connect」関数を利用します。

resource pg_connect ( データベース接続文字列 )

 pg_connect関数では、引数にデータベース接続情報を指定します。 接続情報は「キーワード=値」の形式で設定します。 今回は、ホスト名が「localhost」、ポート番号が「5432」、 データベース名が「postgresql」、ユーザ名が「postgresql」 ですので以下のように設定します。 パスワードはPostgreSQLをインストールしたときに設定した パスワードを指定してください(ここでは仮にpostgresと入れてます)。 接続に成功した場合に PostgreSQLの接続リソース、失敗した場合に FALSE を返します。

pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=postgres");

 SQLを実行するには「pg_query」または「pg_query_params」を利用します。

resource pg_query (PostgreSQLの接続リソース, SQL文 )

 pg_query関数は第1引数にpg_connect関数の戻り値を、 第2引数に実行するSQL文を指定します。 SQLの実行に成功した場合はクエリ結果リソース、失敗した場合はFALSEを返します。

resource pg_query_params (PostgreSQLの接続リソース, SQL文 , 置換文字の配列 )

 pg_query_params関数はSQL文に可変の文字列を渡すことができます。 第1引数にpg_connect関数の戻り値を、 第2引数に実行するSQL文を、第3引数に置換する文字列を指定します。 SQLの実行に成功した場合はクエリ結果リソース、失敗した場合はFALSEを返します。  置換文字を使用方法は、SQL文内の置換した個所に「$1、$2、・・・」と順番に記載して、 置換文字の配列に指定した順番に実際の値を指定します。

 ここではpg_query_params関数を利用します。 まずSQL文を作成します。 以下のSQL文の意味はproductsテーブルから、product_nameが$1と等しい条件の行を取得します。 SQL文はpg_query_paramsの第2引数に指定し、$1にあたる情報を第3引数として配列で渡します。 出力フォームからnameという名前で送信されているので スーパーグローバル変数である$_POSTを使って $_POST['name']を指定しています。

$sql = "SELECT product_no, product_name, price FROM products WHERE product_name = $1";
$result = pg_query_params($dbconn, $sql, array($_POST['product_name']));

 pg_num_rows関数を利用してSQLを実行した結果の件数を取得します。 引数にpg_query_paramsu関数の戻り値を指定します。

int pg_num_rows ( SQL実行結果 )

 ここでは、以下のように指定します。

$cnt = pg_numrows($result);

 pg_fetch_row関数を利用してSQL実行結果の行情報を取得します。 第1引数にpg_query_paramsu関数の戻り値を、 第2引数に取得する行番号を指定します。 行番号は0から順番に指定していきます。 戻り値は各列の値を格納した配列を返します。

array pg_fetch_row ( SQL実行結果, 取得する行番号 )

 ここでは、以下のように指定します。 for文で実行結果の件数文だけ行情報を取得していきます。 そして、戻りの配列を$row変数に入れます。

$row = pg_fetch_row($result, $i);

 今回はSQLのSELECT句に"SELECT product_no, product_name, price"の3つの列を指定したので、 $row[0]にはproduct_no、$row[1]にはproduct_name、$row[2]にはpriceの情報が入ります。

print("product_no:$row[0] product_name:$row[1] price:$row[2]");

 最後にpg_close関数を利用してデータベースの接続を閉じます。

bool pg_close ( PostgreSQLの接続リソース )

 ここでは以下のように指定します。

pg_close($dbconn);


[戻る]  [TOP] 


This website is link free.
All graphics and page design, Copyright © 初心者用PHP入門
since 2005.12.10

スポンサー
脱ステロイドお腹が鳴る臭い対策