戻る

PostgreSQLとphpについて

 PostgreSQL を php から利用する方法について簡単に説明します.

☆PostgreSQLについて

 PostgreSQLを使ってデータベースを作成する場合, データベースサーバーに対してユーザー登録をする必要があります. ユーザ登録には管理者権限が必要ですので自分が利用しているサーバーの管理者に相談してみてください.

 ユーザー登録が終わったら自分のユーザーでそのマシンにログインし, PostgreSQL を使うための環境を整えます.
 もしあなたがログインシェルとして csh か tcsh を使用している場合は .cshrc というファイルの最後に以下の記述を追加してください.

setenv PATH /usr/local/pgsql/bin:"$PATH"
setenv PGLIB /usr/local/pgsql/lib
setenv PGDATA /usr/local/pgsqldata

 csh や tcsh ではなく bash を使っている場合は .bashrc というファイルの最後に以下の記述を追加してください.

export PATH=/usr/local/pgsql/bin:$PATH
export PGLIB=/usr/local/pgsql/lib
export PGDATA=/usr/local/pgsql/data

 また,あなたがウィンドウズ上の cygwin で使おうとしている場合は こちら を参照してください.

 追加が終わったら一旦ログアウトし,もう一度ログインしてから

createdb [データベース名]
と入力してください.これで入力したデータベース名のデータベースが作成されます. データベース名は省略しても構いませんが, 省略した場合のデータベース名はユーザー名と同じ名前になります.

 ひとまずここまででデータベースを利用する準備が終わりました. 実際に使う場合はすべて SQL コマンドになりますので, SQL コマンドを実行するプログラム psql を起動します. コマンドラインで

psql [データベース名] [ユーザー名]
と入力し,enterを押してください. 次のようなメッセージが表示されたら psql が起動しています (最後の sample はデータベース名です).
Welcome to psql 7.3, 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

sample=> 

 データベース上に作成する表はテーブルと呼ばれており, このテーブルの作成には CREATE TABLE というSQL文を使います. この命令の書式は以下の通りです.

CREATE TABLE テーブル名 ( 列名1 データ型 , 列名2 データ型 , ... );

 もし,果物の値段のテーブルを作るなら次のように入力し, Enterを押します.

CREATE TABLE kudamono ( id INTEGER PRIMARY KEY, namae TEXT, nedan INTEGER );

 このように入力することで,

CREATE TABLE
と表示されたらテーブルが作成された証拠です. 表示されない場合は最後のセミコロン「;」を忘れていないか確認してください. 忘れていた場合はその新しい行でセミコロンのみ入力してEnterを押してください. これで,psqlが命令の終わりを認識し,実行してくれるはずです. なお,SQL 文の命令はセミコロンまでを1つの命令として扱いますので, これがないと命令は実行されません.注意してください.

 なお,この命令では大文字と小文字を使い分けていますが, これは大文字の部分が SQL 文に定められた語句であることを意味し, 小文字の部分がユーザーが自由に決められる部分を示しています. 実際には大文字も小文字も区別はありませんのでどちらで入力しても全く問題はありません.

 作成したテーブルにデータを登録する場合は INSERT 命令を使います. この命令の書式は

INSERT INTO テーブル名 VALUES ( 値1 , 値2 , .... );
となっていますので,次のように入力します. なお apple のような文字列は「'」(シングルクォーテーション)で囲んでください.
INSERT INTO kudamono VALUES ( 1, 'apple', 100 );

 正しく入力できれば

INSERT 16982 1
のようなメッセージが表示されます. ただし,数字の部分はそのときに応じて変化します.

 登録したデータを見るときは SELECT 命令を使います. 詳しい説明は省略しますが,

SELECT * FROM kudamono;
と入力すれば
 id | namae | nedan 
----+-------+-------
  1 | apple |   100
(1 row)
のように表示されます.

 以上が PostgreSQL を使ったデータベース操作の基本です. より深く使うためには SQL 文を理解する必要がありますのでこれ以上は本などを参照してください. なお,psql を終了するには \q と入力してください.

☆phpの基礎

 php は今までウェブページの作成に使っていた html ファイルの中に JavaScript のように埋め込んで使用します. ただし,php の命令を含む html ファイルはファイル名の最後の部分を html ではなく php としてください.

 なお,php のファイルは必ず EUC の漢字コードで作成してください. (ShiftJISを使う場合はそれなりの指定をする必要があります)

 その他 php の命令などについては こちら を参照してください.

☆phpによるPostgreSQLの利用について

 詳しい命令については こちら を見ていただくとして, とにかく使ってみたい人のためにサンプルのみ載せておきます. 皆さんの参考になれば幸いです. なお,これらのサンプルを皆さんの環境で動かすためには用意したテーブルに対して

GRANT SELECT ON kudamono TO nobody;
といった命令を実行し,パーミッションを設定しておく必要があります.

 上で作成した果物のデータベースを見る. 実行 ソース

 上で作成した果物のデータベースにデータを追加する. 入力フォーム フォームのソース 登録phpのソース

 果物のデータベースをテーブル環境で表示する(並べ変えコマンド付き). 実行 ソース

 果物のデータベースを条件を指定して表示する. 実行 ソース

 果物のデータベースから特定のものを選んで表示する. 実行 選択画面のソース 選択結果表示用のソース

 果物のデータベースから名前に特定の文字列を含むものを探して表示する. 実行 入力フォームのソース 検索結果表示用のソース

注意: ここで示しているサンプルはどれも不正入力に対する対策を行っておらず, このまま流用してウェブサービスなどを構築した場合 SQL インジェクション 攻撃等の格好の標的となってしまいます. 対外的なサービスとして構築するときはその辺りも充分勉強したうえでご利用ください.


戻る