- Home ›
- PHP入門 ›
- PostgreSQLへの接続
PostgreSQLへ接続
それでは実際にPHPを使ってPostgreSQLへ接続してみます。「pg_connect」関数を使います。
resource pg_connect(string connection_string [, int connect_type])
pg_connect() は、connection_string で指定された情報を用いてデータベース
との接続をオープンします。同じ connection_string 引数で 2 回 pg_connect()
関数がコールされた場合は、connect_type に PGSQL_CONNECT_FORCE_NEW を指定
していない限り既存の接続が返されます。
引数:
connection_string 接続するデータベースやユーザー名などを指定する文字
列。デフォルトの値以外に指定する部分を記述します。個々のパラメータは
keyword = value の形式で 設定します。等号の前後の空白はあってもなく
てもかまいません。 空の値や空白を含む値を指定する場合は、その値をシ
ングルクォートで 囲みます。(例: keyword = 'a value')
値の中に シングルクォートやバックスラッシュが含まれる場合は、それら
を バックスラッシュでエスケープする必要があります(例: \' および \\)。
現在利用できるパラメータは以下のとおりです。 host, hostaddr, port,
dbname, user, password, connect_timeout, options, tty(無視されます),
sslmode, requiressl(非推奨。代わりに sslmode を推奨します)および
service 。これらのうち実際にどの パラメータが使えるかは、PostgreSQL
のバージョンに依存します。
connect_type PGSQL_CONNECT_FORCE_NEW が渡された場合は、たとえ
connection_string が既存の接続と まったく同一であっても新しい接続
をオープンします。
返り値:
成功した場合にPostgreSQLの接続リソース、失敗した場合にFALSEを返します。
実際に指定する値としてはPostgreSQLのホスト名(host)やデータベース名(dbname)、そしてユーザー名(user)とパスワード(password)などかと思います。
$link = pg_connect("host=localhost dbname=db user=usr password=pass");
PostgreSQLからの切断
接続後、接続を切断するには「pg_close」関数を使います。
bool pg_close([resource connection])
connection リソースで指定した PostgreSQL データベースへの持続的でない接
続を閉じます。
引数:
connection PostgreSQL データベース接続リソース。connection が指定され
ていない場合はデフォルトの接続が使用されます。デフォルトの接続は、直
近の pg_connect() あるいは pg_pconnect() によって作成されたものです。
返り値:
成功した場合に TRUE を、失敗した場合に FALSE を返します。
実際の使い方は下記のようになるかと思います。
$link = pg_connect("host=localhost dbname=db user=usr password=pass");
// PostgreSQLに対する処理
pg_close($link);
エラー処理
PostgreSQLに対する処理の過程で何かエラーが発生した場合「pg_last_error」関数でエラーメッセージを取得することができます。
string pg_last_error([resource connection])
pg_last_error() は、指定した connection から直近のエラーメッセージを返
します。
引数:
connection PostgreSQL データベース接続リソース。connection が指定され
ていない場合はデフォルトの接続が使用されます。デフォルトの接続は、直
近の pg_connect() あるいは pg_pconnect() によって作成されたものです。
返り値:
指定した connection の直近のエラーメッセージを 含む文字列を返します。
エラー時には FALSE を返します。
例えば「pg_connect」関数利用時にエラーが発生した場合、エラーメッセージを見るには下記のように記述します。
$link = pg_connect("host=localhost dbname=db user=usr password=pass");
if (!$link) {
print(pg_last_error());
}
// PostgreSQLに対する処理
pg_close($link);
実際には接続に失敗した場合、その後のPostgreSQLに対する処理を実行出来ない為、「exit」関数又は「die」関数を用いてスクリプトを終了させます。
$link = pg_connect("host=localhost dbname=db user=usr password=pass");
if (!$link) {
die('接続失敗です。'.pg_last_error());
}
// PostgreSQLに対する処理
pg_close($link);
※「exit」関数及び「die」関数については『スクリプトを終了する(exit, die)』を参照して下さい。
では実際に試してみます。ユーザー名「pguser」パスワード「pguser」で「uriage」データベースへ接続を行います。
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
$conn = "host=localhost dbname=uriage user=pguser password=pguser";
$link = pg_connect($conn);
if (!$link) {
die('接続失敗です。'.pg_last_error());
}
print('接続に成功しました。<br>');
// PostgreSQLに対する処理
$close_flag = pg_close($link);
if ($close_flag){
print('切断に成功しました。<br>');
}
?>
</body>
</html>
上記ファイルをWWWサーバに設置しブラウザ経由で見ると下記のように表示されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。