Postgres インストール
Windows環境へのPostgresのインストール手順と設定
Postgres9のダウンロード
EnterpriseDBからDownload PostgreSQLに移動し、 32ビットはWin x86-32、 64ビットはWin x86-64の最新のexeファイル(postgresql-9.1.5-1-windows.exe)をダウンロード。
インストール
exeをダブルクリックし、インストーラーを起動。
SetUp - PostgreSQL Next >
Installation Directory
Installation Directory 「C:\Program Files\PostgreSQL\9.1」 を設定
Next >
Data Directory
Data Directory 「C:\Program Files\PostgreSQL\9.1\data」 を設定
Next >
Password
Password、Retype password を設定
Next >
Port
Port 「5432」 を設定
Next >
Advanced Options
Local 「Japanease, Japan」 を設定
Next >
Ready to Install
Next >
Completeing the PostgreSQL Setup Wizard
Finish
DBの作成
コマンドプロンプトを立ち上げ、コマンドが実行できるディレクトリへ移動。
cd C:\Program Files\PostgreSQL\9.1\bin
テストDBを作成、パスワードを入力。
createdb -U postgres testdb
テストDBに接続、パスワードを入力。
psql -U postgres testdb
testdb=# \l testdb
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
--------+----------+------------------+--------------------+--------------------+------------
testdb | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 |
テストテーブルを作成。
CREATE TABLE test (
test_name text,--名前
test_datetime timestamp NOT NULL default now()--時間
);
testdb=# \d test
テーブル "public.test"
列 | 型 | 修飾語
---------------+-----------------------------+------------------------
test_name | text |
test_datetime | timestamp without time zone | not null default now()
テストデータをINSERT。
INSERT INTO test (test_name) VALUES ('foo');
INSERT INTO test (test_name) VALUES ('baz');
INSERT INTO test (test_name) VALUES ('bar');
SELECTで確認。
SELECT * FROM test;
testdb=# SELECT * FROM test;
test_name | test_datetime
-----------+-------------------------
foo | 2012-11-15 12:00:00.359
bar | 2012-11-15 12:00:00.359
baz | 2012-11-15 12:00:00.375
(3 行)
php.iniの設定
拡張機能(dll)を有効化
extension=php_pgsql.dll
Windows版 PHP5.2.6以降のphp_pgsql.dllは壊れているため、PHP5.2.5のphp_pgsql.dllを取得し、元のphp_pgsql.dllに上書きする必要あり。
C:\php-5.4.5下のlibpq.dllをパスの通っているディレクトリ(一般的にはC:\WINDOWS\system32下)にコピー。
PHPからDBに接続
PHP
// 接続
$conn = pg_connect("host=localhost port=5432 dbname=testdb user=postgres password=postgres");
if (! $conn) {
echo "接続エラー";
exit;
}
// 実行
$result = pg_query($conn, "select * from test");
if (! $result) {
echo "実行エラー";
exit;
}
// 取得
while ($row = pg_fetch_row($result)) {
echo $row[0] . "\n";
echo $row[1] . "\n";
}