since 2002/01/01
lastupdate 2003/01/16
   

データベースへの接続と切断

まずは一番基本的なことから。やはり基本といえばデータベースへの接続ですね。 でもその前に...


アクセス権の設定

さて、通常 PostgreSQL では、テーブルへのアクセスは作ったユーザにしかありません。 これ以外のユーザでアクセスするには明示的にアクセス権を与えてやる必要があります。
当然 PHP によりアクセスする場合、通常は web サーバを介す事になり、大抵の場合 nobody というユーザでのアクセスになるので、 これに対してアクセスを許可しておかないとエラーになります。
テーブルに対するアクセス権の設定については、 こちら をご覧ください。
尚、サンプルではテーブル zaiko に対してアクセスするので、psql で次のようにすれば全てのアクセス権が設定されます。

TEST=> GRANT ALL ON zaiko TO nobody;

アクセス権の設定に成功すると、CHANGE と表示されます。

データベースへの接続

まずどんな処理を行うにせよ、必ず最初にデータベースへ接続する必要があります。ま、当然ですよね(^^
データベースへの接続には、pg_connect()を使います。構文としてはこんな感じです。

構文: コネクションハンドル = pg_connect ( データベースへの接続文字列 ) ;

で、実際にはこのような感じになります。
$conStr = "host=localhost port=5432 dbname=TEST" ;
$con    = pg_connect($conStr);

$conStr というのはデータベース接続文字列を格納する変数で、こ の例だとサーバ内のポート 5432 を使って TEST というデータベースへアクセスするための接続文字列になります。
通常、localhost 及び 5432 はデフォルトですので、$conStr = "dbname=TEST"; だけでも接続できます。
実際に接続するのは2行目の pg_connect()です。$con には接続したデータベースへのコネクションハンドルが格納されます。 接続に失敗した場合は FALSE が返ってきます。ここで受け取ったコネクションハンドルにより、この後の作業を行いますので、 必ず変数で戻り値を受け取ってください。
余談ですが、このとき受取ったコネクションハンドルを echoすると、Resource id #1 などと表示されます。

データベースの切断

まずぶっちゃけた話、PHPではスクリプトが終了するときに自動的にリソースを開放しデータベースを切断するので、 特に必要がなければ明示的に切断をする必要はありません。 とはいえ、やはり必要なこともあるので一応紹介します。
また、私は(なんとなくですけど(^^;;;) 通常の処理内では出来るだけ pg_close() を使うようにしています。
ま、実際切断といってもたいしたことではないので、簡単に行きます。

pg_close($con);

これだけです。$con には pg_connect() で受取った有効なコネクションハンドルを渡します。