PostgreSQL

(2007.5.18, 2008.5.14)

データベースPostgreSQLをLinux(Fedora Core 6)で,Apache, PHPと連動させて使うには.インストールメモです.

(環境) Fedora Core 6, CentOS 5.1

PostgreSQLのインストール

rootで(以下,#はrootでのコマンドプロンプト)

# yum install postgresql-server

ユーザpostgresにパスワードを設定

# passwd postgres

ユーザpostgresのホームディレクトリ(/var/lib/pgsql/)でデータベース初期化.(以下,$はpostgresでのコマンドプロンプト)

$ su postgres

$ cd

$ initdb -D data

起動

PostgreSQLサーバーの起動

# /etc/init.d/postgresql start

PostgreSQLサーバーの標準のラン・レベルをon.

# chkconfig postgresql on

PostgreSQLサーバーの停止方法

$ pg_ctl stop -D data

データベースの一覧の表示

$ psql -l

List of databases

Name | Owner | Encoding

-----------+----------+----------

postgres | postgres | UTF8

template0 | postgres | UTF8

template1 | postgres | UTF8

(3 rows)

データベースtestdbの作成

$ createdb testdb

$ psql -l

List of databases

Name | Owner | Encoding

-----------+----------+----------

postgres | postgres | UTF8

template0 | postgres | UTF8

template1 | postgres | UTF8

testdb | postgres | UTF8

(4 rows)

データベースtestdbの操作 - psql

$ psql testdb

Welcome to psql 8.1.8, the PostgreSQL interactive terminal.

テーブルtesttblの作成

testdb=# create table testtbl(hinmei TEXT, nedan INTEGER);

CREATE TABLE

テーブルの一覧

testdb-# \dt

List of relations

Schema | Name | Type | Owner

--------+---------+-------+----------

public | testtbl | table | postgres

(1 row)

データの登録

testdb=# insert into testtbl values('orange', 100);

INSERT 0 1

testdb=# insert into testtbl values('apple', 150);

INSERT 0 1

データの表示

testdb=# select * from testtbl

testdb-# ;

hinmei | nedan

--------+-------

orange | 100

apple | 150

(2 rows)

データベースの削除

$ dropdb -U postgres testdb

データベースのバックアップ

$ pg_dump testdb > dbbackup

バックアップファイルからデータベースの復元

$ dropdb testdb

$ createdb testdb

$ psql -e testdb < dbbackup

PHPとPostgreSQLの連携

phpのインストール

# yum install php

# yum install php-mbstring

# yum install php-pear

php-pgsqlのインストール.

# yum install php-pgsql

Apacheの再起動.

# /etc/init.d/httpd restart

テスト用PHPファイル

以下のファイルをホームページサーバーにおいて,ブラウザで表示して,phpのバージョン情報がでればOK.

test.php

<?php

phpinfo();

?>

ホームページからデータベースに値を書き込む,読み出す方法

以下の3つのファイルをホームページサーバーにおいて,testdb.htmlをブラウザで表示.

testdb.html

<html>

<HEAD>

<META http-equiv="Content-Type" content="text/html; charset=utf-8">

<TITLE>サンプル</TITLE>

</HEAD>


<body>

データベースに値を書き込む,読み出す方法

</p><br>


<form method="post" action="write.php">

<input type="text" value="" name="hinmei">

<input type="text" value="" name="nedan">

<input type="submit" value="書込">

</form>


<form method="post" action="read.php">

<input type="submit" value="読出">

</form>


</body>

</html>

write.php

<html>


<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<TITLE>書込み結果</TITLE>

</head>


<body>

<?php


$hinmei=$_POST["hinmei"];

$nedan=$_POST["nedan"];


echo "書込み結果結果<br>";

echo $hinmei;

echo "<br>";

echo $nedan;

echo "<br>";


$con = pg_connect("dbname=testdb user=postgres");

$command = "insert into testtbl values ('$hinmei', '$nedan');";

$result = pg_exec($con, $command);


pg_close($con);


?>


</body>

</html>

read.php

<html>


<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<TITLE>一覧</TITLE>

</head>


<body>

<?php


echo "一覧<br>";


$con = pg_connect("dbname=testdb user=postgres");

$command = "select * from testtbl;";

$result = pg_exec($con, $command);

$n = pg_numrows($result);


echo "<table border=1>";

echo "<tr><td>品名</td><td>値段</td></tr>";


for($i=0;$i<$n;$i++){

$hinmei = pg_result($result, $i, 0);

$nedan = pg_result($result, $i, 1);

echo "<tr><td>$hinmei</td><td>$nedan</td></tr>";

}

echo "</table>";


pg_close($con);


?>


</body>

</html>

参考URL, 文献

  1. Fedora Core による自宅サーバーの構築 (http://www.shitomi.jp/index.html)

  2. 石井 達夫 『PC UNIXユーザのためのPostgreSQL完全攻略ガイド』 技術評論社; 改訂第3版版 (2001/06)