PHPからPostgreSQLへ接続

PHPからPostgreSQLへ接続 → クエリを発行 → データ取得しているときの覚書。

環境: CentOS Stream 8, PostgreSQL 14.2, PHP 7.4.19


参考サイト


pgsqlインストール

PHPからPostgreSQLに接続するためのextensionをインストール
# dnf install php-pgsql

/etc/php.d/20-pgsql.iniが作成された。

依存関係のlibpg5がpgdg-commonリポジトリからインストールされた。
これはPostgreSQLをインストールした際に追加されたリポジトリ。

確認
# php --ri pgsql

pgsql

PostgreSQL Support => enabled
PostgreSQL(libpq) Version => 13.5
PostgreSQL(libpq)  => PostgreSQL 13.5 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-5), 64-bit
Multibyte character support => enabled
SSL support => enabled
Active Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
pgsql.allow_persistent => On => On
pgsql.max_persistent => Unlimited => Unlimited
pgsql.max_links => Unlimited => Unlimited
pgsql.auto_reset_persistent => Off => Off
pgsql.ignore_notice => Off => Off
pgsql.log_notice => Off => Off



サンプルプログラム

ローカルホストのPostgreSQLからデータ取得するサンプル
データベース: test
接続ユーザー: postgres
テーブル名: company

$conn = pg_connect("host=localhost port=5432 dbname=test user=postgres password=pass");
$result = pg_query($conn, "SELECT * FROM company LIMIT 10");
$dictionary = pg_fetch_all($result);
vardump($dictionary);

escapeやprepareの関数は一通り用意されているので後は自分でDBクラスを作る。
参考: PHP: PostgreSQL 関数 - Manual

個人的にはWordPressをよく使うのでwp-db.phpを参考にする予定。

LaravelなどのPHP Frameworkを参考にしてもいいと思う。
参考: Laravel - The PHP Framework For Web Artisans


【関連記事】