PHPでデータベース
DBアクセスの手順
DBアクセスは、
- DBに接続
- SQLを実行-必要に応じて実行結果を参照
- DBから切断
DBアクセスの種類
DBアクセスには、
更新系と参照系では、
また、
たくさんのSQL文をまとめて実行したい時や、
データベースの構築
DBアクセスを試みる前に、
DBアクセスの対象は、
テーブルを作成するには、
CREATE SEQUENCE recid;
CREATE TABLE bookmark (
id INTEGER PRIMARY KEY NOT NULL DEFAULT NEXTVAL( 'recid' ),
title VARCHAR(100) NOT NULL,
URL VARCHAR(200) NOT NULL UNIQUE
);
リスト1のようなSQL文は1文ずつ実行するよりも、psql -U postgres データベース名 < ファイル名
" のように一括して実行すると便利です。なお、postgres
の部分はユーザ名というもので、
テーブルが作成できたら、
1. データベースに接続
DBアクセスを行う前に、
// データベースpostgresに接続
$db = pg_connect( 'host=localhost port=5432 dbname=postgres user=postgres password=postgres' ) or die( '接続できませんでした' );
戻り値の$dbは、
2.SQLの実行
データの追加
次にSQLを実行します。リスト1を実行した段階では、
データを追加する時には、pg_
によってINSERT文を準備し、pg_
で追加するデータを設定してSQL文を実行するようにします。SQL文は単なる文字列に過ぎませんが、
// 文字コード変換
$title = mb_convert_encoding( '技術評論社', 'UTF-8', 'SJIS' );
$url = mb_convert_encoding( 'http://www.gihyo.co.jp/', 'UTF-8', 'SJIS' );
// SQL文の準備
$rs = pg_prepare( $db, 'insert', 'INSERT INTO bookmark( title, url ) VALUES ( $1, $2 )' );
// データ追加
$rs = pg_execute( $db, 'insert', array( $title, $url ) );
// 追加されたデータの数を表示
print pg_affected_rows( $rs ) .'件のデータを追加しました' . "\n";
// 実行結果に関するデータを解放(クリア)する
pg_free_result( $rs );
追加されたデータの参照
データを追加できたら、
なお、
// 追加された行を参照
$rs = pg_query( 'SELECT * FROM bookmark' );
// 参照可能な行数を表示(正常に実行できたら1)
print pg_num_rows( $rs ) . '件のデータがあります' . "\n";
// 1行ずつ読み込み
while( $row = pg_fetch_array( $rs ) ) {
// 文字コード変換
$title = mb_convert_encoding( $row[ 'title' ], 'SJIS', 'UTF-8' );
// 追加されたデータを表示
print $title . ' : ' . $row[ 'url' ] . "\n";
}
3.DBを切断
DBアクセスをすべて終了する時は、pg_
によってそれまで接続していたDBを切断します。これ以降はDBアクセスを実行できません。
// DBを切断
pg_close( $db );
上記1~3までを実行した結果、
1件のデータを追加しました
1件のデータがあります
技術評論社 : http://www.gihyo.co.jp/
関数のおさらい
今回DB接続からDB切断までに用いた関数の一覧を表1に示します。PostgreSQLにアクセスする関数は、
関数の詳細は、
pg_ | PostgreSQLのDBに接続する |
pg_ |
実行するSQLを準備する |
pg_ |
準備したSQLを実行する |
pg_ |
処理が実行された行数を得る |
pg_ |
実行結果に関するデータを解放 |
pg_ |
SQLをすぐに実行する |
pg_ |
参照可能な行数を得る |
pg_ |
1行ずつ参照する |
pg_ |
接続していたDBを切断する |