#navi(../)
* PHPのpg_connect関数を使用してPostgreSQLに接続する [#ha33a09e]
PHPのpg_connect関数を使用してPostgreSQLに接続するサンプルコードを以下に記します。~
使用したOSはCentOS6, PostgreSQLのバージョンは8.4.13になります。
#contents
#htmlinsertpcsp(db-top.html,db-sp.html)
* 関連資料 [#m5197b75]
以下の2つの資料は[[LINUX.JUST4FUN.BIZ>http://linux.just4fun.biz]]で公開している資料です。
-[[UbuntuでLAPP環境を構築する>http://linux.just4fun.biz/Ubuntu/LAPP%E7%92%B0%E5%A2%83%E3%81%AE%E6%A7%8B%E7%AF%89.html]]
-[[CentOSでLAPP環境を構築する>http://linux.just4fun.biz/CentOS/CentOS%E3%81%A7LAPP%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89.html]]
- PHP: pg_connect - Manual~
http://php.net/manual/ja/function.pg-connect.php
* pg_connectの接続文字列 [#x07c055e]
pg_connectの接続文字列は以下のように複数指定する方法があります。~
これは、PostgreSQLの設定ファイルpg_hba.confにより必要な項目が異なってきます。
** データベースのみ指定 [#h6a0498f]
$conn = pg_connect("dbname=foo");
この場合は、pg_hba.confの設定が以下のようになっていると思います。
<snip>
# "local" is for Unix domain socket connections only
local all all trust
<snip>
PHPスクリプトを起動するユーザがPostgreSQLに登録されていれば上記の接続文字列だけで接続されます。
** ホストとデータベースを指定 [#q7c0db91]
$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");
** ホスト、ユーザ、パスワードを指定する [#v3d19ec4]
$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
** ポートを指定したい場合 [#mf035cd8]
通常ポートの5432ではなく、他のポートに変更した場合は以下のようにportを追記します。~
(port=5432と明示的に記述しても大丈夫です。)
$conn = pg_connect("host=127.0.0.1 port=12345 dbname=foo user=bar password=hoge");
** オプションを追加したい場合 [#hcece1ef]
optionsに追加したいオプション文字列を記述します。~
例(クライアントエンコード文字コードをUTF8にする。)
$dbconn = pg_connect("host=127.0.0.1 options='--client_encoding=UTF8'");
* PostgreSQLに接続するPHPサンプルコード [#gce0bf60]
以下のサンプルコードは、PostgreSQLに接続しSELECT now();を実行して終了する単純なサンプルソースです。~
PostgreSQLの接続文字列に関しては、上記のようにpg_hba.confの設定により変化します。~
サンプルスクリプトを試そうと思っている方は、接続文字列を変更しスクリプトを実行してみてください。
PostgreSQLへの接続にはユーザID、パスワードを必要とする設定になっているとしたサンプルコードとなっています。~
また、本スクリプトはコマンドラインから実行しました。
- サンプルコード
#ref(pg_connect.php.zip)
<?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;
}
?>
- 実行結果
上記のpg_connectのサンプルコードを実行したときの出力です。
$ php pg_connect.php
2012-10-03 16:16:15.269531+09
#htmlinsertpcsp(db-btm.html,db-sp.html)