PHPプログラミング

レシピ

データベース PostgreSQL

PostgreSQLデータベースへ接続

PostgreSQLサーバーへの基本的な接続方法について、「PostgreSQL関数」と「PDO」の2通りのパターンを解説します。

この記事のポイント

  • PHPからPostgreSQLデータベースへの接続方法を確認する
  • PostgreSQL関数を使ってデータベースへ接続する
  • PDOを使ってデータベースへ接続する

目次

PostgreSQLデータベースへの接続方法

PHPからPostgreSQLデータベースへ接続し、各種操作を行う方法は大きく分けて2つあります。
1つ目はPHPのlibpqライブラリから提供されるPostgreSQL関数を使用する方法。
2つ目はPDO(PHP Data Objects)を使用する方法です。

どちらの方法を使うかの判断は機能的な比較というよりも、サーバー環境やプログラマーの裁量によります。
分かりやすい例としては、PDOを使って他のデータベース(MySQLやSQLiteなど)を操作するコードを記述したことがある場合は、PostgreSQLもPDOで扱う方がスムーズでしょう。

一方で、他のプログラミング言語(PythonやRubyなど)で関数を使っての操作コードを書いた経験がある場合は、PHPについてlibpqライブラリの関数を使う形で書いた方が感覚として分かりやすいはずです。

それぞれの接続方法を確認していきましょう。

PostgreSQL関数で接続する

こちらの方法は関数を呼び出して各種操作を行います。
データベースへの接続から切断、テーブルの操作、データの取得・更新・登録・削除などのクエリ実行も全て関数です。
よく使うものをいくつかピックアップしてみます。

  • pg_connect – データベースと接続
  • pg_close – データベースとの接続を切断
  • pg_host – 接続したデータベースのホストを取得
  • pg_query – 任意のSQLクエリを実行
  • pg_select – データを取得
  • pg_insert – データを追加
  • pg_update – 該当するデータを更新
  • pg_delete – 該当するデータを削除
  • pg_fetch_result – 取得データの結果を取得
  • pg_fetch_all – 取得した全データを配列形式で取得
  • pg_fetch_object – 取得したデータをオブジェクト形式で取得

用意された全ての関数を確認したい場合はphp.netを参照してください。
PostgreSQL関数 – php.net

実際にデータベースへ接続するコードを書いていきましょう。
PostgreSQLデータベースへの接続、接続結果を確認、最後に接続解除するところまでをコードにすると次のようになります。

PostgreSQLデータベースに接続するコード例

// 各種パラメータを指定して接続
$pg_conn = pg_connect("host=localhost port=5432 dbname=test user=testuser password=testtest");

if( $pg_conn ) {
	var_dump("接続に成功しました");
} else {
	var_dump("接続できませんでした");
}

// データベースとの接続を切断
pg_close($pg_conn);

実行結果(接続に成功した場合)

PostgreSQLサーバーへの接続に成功した場合の表示例

解説

最初に、pg_connect関数を使ってデータベースへ接続しています。
指定しているパラメータは次の5つ。
これらを「半角スペース」で区切って指定します。

  • host – データベースサーバーのホスト名
  • port – データベースサーバーのポート番号
  • dbname – 接続したいデータベース名
  • user – ユーザー名
  • password – 上記ユーザー名のパスワード

接続に成功すると接続リソースを、失敗した場合はfalseが返され、$pg_connに格納されます。

続くif文では$pg_connに入っている接続結果を確認し、もし接続リソースが入っていたら接続成功メッセージを出力し、falseの場合には失敗メッセージを出力しています。

最後にpg_close関数でデータベースとの接続を解除して終了です。
以上が、PostgreSQL関数を使った基本的な接続方法です。

PDOで接続する

PDOでは、最初にPDOオブジェクトを作成してデータベースとの接続を行います。その後、そのオブジェクトのメソッドを使って各種データベースの操作を実行します。

PDOはPostgreSQLだけではなく、MySQLやSQLiteなど他のデータベースにも同じ手順で接続、操作を行うことができ非常に使い勝手が良いです。
データベースタイプなど若干の修正で、SQLといったソースコードの使い回しが可能になります。
(PDOについてより詳しくはこちらの記事をご覧ください)

それでは実際に、PostgreSQLへ接続するコードを書いていきましょう。

データベースに接続するコード例

try {
	// 各種パラメータを指定して接続
	$pdo_conn = new PDO( 'pgsql:host=localhost; dbname=test;', 'testuser', 'testtest' );	
	var_dump("接続に成功しました");

} catch(PDOException $e) {
	var_dump($e->getMessage());
}

// データベースとの接続を切断
$pdo_conn = null;

実行結果(接続に失敗した場合)

PostgreSQLサーバーへの接続に失敗した場合の表示例

接続に成功した場合は、上記のPostgreSQL関数と同じ結果になります。

解説

最初に、new PDOで必要なパラメータを渡しながらPDOオブジェクトを作成し、$pdo_connへオブジェクトを格納します。オブジェクトを作成するタイミングで接続が行われています。パラメータは3つに分けて指定します。

pgsql:host=localhost; dbname=test;」では3つの設定情報を指定しています。
1つは「pgsql」でPostgreSQLであることを指定し、2つ目はホスト名、3つ目はデータベース名です。
今回は仮にホスト名を「localhost」、データベース名を「test」としています。

2つ目、3つ目のパラメータ「testuser」「testtest」はそれぞれユーザー名とパスワードです。
ご使用の環境に応じて指定してください。

今回は接続部分をtry文で囲っていますが、もしデータベースへの接続に失敗した場合には例外処理が実行されるようになっています。
具体的にはPDOExceptionオブジェクトの例外が投げられるので、それを$eへ格納し、その内容をgetMessageメソッドで取得します。

最後に、PDOオブジェクトが入っている$pdo_connを空(null)にすることで接続を解除して終了しています。
以上が、PDOを使ったPostgreSQLへの基本的な接続方法です。

PDOについてより詳しくは、php.netの下記ページを参照してください。
PDO – php.net

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。