15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPでPostgreSQLに接続する方法

Last updated at Posted at 2019-02-04

はじめに

CentOS上のメールサーバが受信したメールをPHPで解析して、内容をPostgreSQLデータベースに書き込む処理を作成することとなったため、備忘録としてやったことを残す。

実行環境

  • CentOS 6.9
  • Apache Http Service 2.4
  • PHP 7.2.14
  • PostgreSQL 9.5

環境構築

上記実行環境の環境構築は今回省略する。

DB接続用ドライバのインストール

PHPからPostgreSQLデータベースへのアクセスを可能にするためのPHP Data Objects (PDO)をインストールする。

yum install --enablerepo=remi-php72 php-pdo php-pgsql

※別の接続方法として、pg_connectを使用する方法もあるらしいが、PHP初心者なので詳細な違いは不明。
 PDOを使用すると、DBの種類などを隠蔽でき、使用しているデータベースが何であるかにかかわらず、同じ関数を使用してクエリの発行やデータの取得が行えるとのこと。
参考:http://php.net/manual/ja/intro.pdo.php

サンプルコード

ドライバや設定、接続確認用のシンプルなサンプル。
(とあるテーブルの全レコードを取得して指定した列名を一覧表示するプログラム。)

<?php

$DBHOST = "x.x.x.x";
$DBPORT = "xxxxx";
$DBNAME = "x";
$DBUSER = "x";
$DBPASS = "x";

try{
  //DB接続
  $dbh = new PDO("pgsql:host=$DBHOST;port=$DBPORT;dbname=$DBNAME;user=$DBUSER;password=$DBPASS");
  print("接続成功".'<br>');

  //SQL作成
  $sql = 'select * from x';
  //SQL例
  //$sql = 'select * from "SchemeName"."TableName"';

  //SQL実行
  foreach ($dbh->query($sql) as $row) {
      //指定Columnを一覧表示
      print($row['ColumnName'].'<br>');
  }

}catch(PDOException $e){
  print("接続失敗".'<br>');
  print($e.'<br>');
  die();
}
//データベースへの接続を閉じる
$dbh = null;
?>

実行結果

ブラウザでPHPを表示した結果を以下に示す。
1行目に「接続成功」が出力され、2行目以降に取得したColumnNameの値が一覧表示される。
php_result.png

まとめ

PHPからPostgreSQLに接続してデータ取得するところまでを行った。

どこかでメールの解析等も残したいなぁ。

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?