PHPのpg_connect関数を使用してPostgreSQLに接続するサンプルコードを以下に記します。
使用したOSはCentOS6, PostgreSQLのバージョンは8.4.13になります。
以下の2つの資料はLINUX.JUST4FUN.BIZで公開している資料です。
pg_connectの接続文字列は以下のように複数指定する方法があります。
これは、PostgreSQLの設定ファイルpg_hba.confにより必要な項目が異なってきます。
$conn = pg_connect("dbname=foo");
この場合は、pg_hba.confの設定が以下のようになっていると思います。
<snip> # "local" is for Unix domain socket connections only local all all trust <snip>
PHPスクリプトを起動するユーザがPostgreSQLに登録されていれば上記の接続文字列だけで接続されます。
$conn = pg_connect("host=localhost dbname=foo");
この場合は、pg_hba.confの設定が以下のようになっていると思います。
(CIDR-ADDRESSの文字列は環境によってIPの範囲指定をする必要があります。)
# IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust
PHPスクリプトを起動するユーザがPostgreSQLに登録されていれば上記の接続文字列だけで接続されます。
またユーザを指定する場合は、以下のようになります。(trustになっているのでパスワードは不要)
$conn = pg_connect("host=localhost dbname=foo user=bar");
$conn = pg_connect("host=127.0.0.1 dbname=foo user=bar password=hoge");
この場合は、pg_hba.confの設定が以下のようになっていると思います。
(CIDR-ADDRESSの文字列は環境によってIPの範囲指定をする必要があります。)
# IPv4 local connections: host all all 127.0.0.1/32 md5
とか
# IPv4 local connections: host all all 127.0.0.1/32 password
通常ポートの5432ではなく、他のポートに変更した場合は以下のようにportを追記します。
(port=5432と明示的に記述しても大丈夫です。)
$conn = pg_connect("host=127.0.0.1 port=12345 dbname=foo user=bar password=hoge");
optionsに追加したいオプション文字列を記述します。
例(クライアントエンコード文字コードをUTF8にする。)
$dbconn = pg_connect("host=127.0.0.1 options='--client_encoding=UTF8'");
以下のサンプルコードは、PostgreSQLに接続しSELECT now();を実行して終了する単純なサンプルソースです。
PostgreSQLの接続文字列に関しては、上記のようにpg_hba.confの設定により変化します。
サンプルスクリプトを試そうと思っている方は、接続文字列を変更しスクリプトを実行してみてください。
PostgreSQLへの接続にはユーザID、パスワードを必要とする設定になっているとしたサンプルコードとなっています。
また、本スクリプトはコマンドラインから実行しました。
<?php if( !$conn = pg_connect("host=127.0.0.1 port=5432 dbname=postgres user=foo password=foo")) { print ("Connection failed.\n"); exit; } $sql = "SELECT now();"; if ( !$result = pg_query($sql)) { print ("Failed : $sql\n"); exit; } $row = pg_fetch_array($result); print $row[0] ."\n"; if (!pg_close($conn)) { print ("disconnect failed\n"); exit; } ?>
$ php pg_connect.php 2012-10-03 16:16:15.269531+09