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, 文献
Fedora Core による自宅サーバーの構築 (http://www.shitomi.jp/index.html)
石井 達夫 『PC UNIXユーザのためのPostgreSQL完全攻略ガイド』 技術評論社; 改訂第3版版 (2001/06)