Apache, PHP が載っている FreeBSD マシンに PostgreSQL をインストールして、PHP プログラムからデータの読み書きができるようにします。
PostgreSQL のインストール
root でログイン
# /stand/sysinstall
Configure
Packages
2 FTP
Japan
databases
postgresql-7.4.6 を選択
[ OK ]
Install
[ OK ]
再起動
root でログイン
PostgreSQL の管理者 gpsql にスイッチ
# su - pgsql
$
データベースの初期化
$ initdb --encoding=EUC_JP --no-locale
データベースの起動
$ postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
テストデータベースの作成
$ createdb test
CREATE DATABASE
[1] Done postmaster -D /usr/local/pgsql/data >logfile 2>&1
psql で確認
$ psql test Welcome to psql 7.4.6, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit test=# \l List of databases Name | Owner | Encoding -----------+-------+---------- template0 | pgsql | EUC_JP template1 | pgsql | EUC_JP test | pgsql | EUC_JP (3 rows) test=# \q $
root に戻る
$ exit
#
起動スクリプトの編集
# jvim /usr/local/etc/rc.d/010.pgsql.sh case $1 in start) [ -x ${PGBIN}/pg_ctl ] && { echo -n ' pgsql' su -l pgsql -c \ "[ -d \${PGDATA} ] && exec ${PREFIX}/bin/pg_ctl start -s -w -o '-i'" ^^^^^^^ 追記↑ } ;;#
ユーザデータベースの作成
# su - pgsql
$ createuser shima
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
$
shima でログインして.profile を編集
----------加筆 ここから
PGLIB=/usr/local/lib
# note: PGDATA can be overridden by the -D startup option
PGDATA=/usr/local/pgsql/data
export PATH PGLIB PGDATA
----------加筆 ここまで
再ログインしてデータベースを作る> createdb CREATE DATABASE > psql Welcome to psql 7.4.6, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit shima=> \l List of databases Name | Owner | Encoding -----------+-------+---------- shima | shima | EUC_JP template0 | pgsql | EUC_JP template1 | pgsql | EUC_JP test | pgsql | EUC_JP (4 rows) shima=>PostgreSQL へ接続するためのモジュールを追加します。
php のインストール
root でログイン
# /stand/sysinstall
Configure
Packages
2 FTP
Japan
[ YES ]
php4-pgsql-4.3.10
[ OK ]
Install
[ OK ]
再起動
テーブルの作成
shima でログイン
テーブル生成のための SQL 文を書いたファイルを作る。
> jvim create.sql
create table meibo (
no integer not null,
shimei text,
primary key (no)
);保存して終了
:wq!
SQL 文の実行
> psql shima < create.sql
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "meibo_pkey" for table "meibo"
CREATE TABLE
>確認
データを登録する SQL 文を書く> psql Welcome to psql 7.4.6, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit shima=> \d List of relations Schema | Name | Type | Owner --------+-------+-------+------- public | meibo | table | shima (1 row) shima=> \d meibo Table "public.meibo" Column | Type | Modifiers --------+---------+----------- no | integer | not null shimei | text | Indexes: "meibo_pkey" primary key, btree ("no") shima=>> jvim data.sql
insert into meibo (no, shimei) values (10, '島村');
insert into meibo (no, shimei) values (20, '鈴木');
insert into meibo (no, shimei) values (30, '佐藤');保存して終了
:wq!
SQL 文の実行
> psql shima < data.sql
INSERT 17151 1
INSERT 17152 1
INSERT 17153 1
>確認
> psql Welcome to psql 7.4.6, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit shima=> select * from meibo; no | shimei ----+-------- 10 | 島村 20 | 鈴木 30 | 佐藤 (3 rows) shima=>
php で表示
簡単な PHP プログラムを書いてデータを抽出してみます。
shima でログイン
> cd public_html >jvim test.php保存して終了<?php $con = pg_connect("host=localhost port=5432 dbname=shima user=shima"); $sql = "select * from meibo"; $result = pg_query($con, $sql); for ($ii = 0; $ii < pg_num_rows($result); $ii++) { echo pg_fetch_result($result, $ii, 'no'); echo "=="; echo pg_fetch_result($result, $ii, 'shimei'); echo "<br>"; } ?>ブラウザを起動して確認:wq!http://192.168.1.2/~shima/test.php
以下のように表示されればOK
10==島村
20==鈴木
30==佐藤作成日:2005/8/18