TOP書籍連動> PDO(PHP Database Object)の特徴(1)
まるごと PHP!
まるごと PHP!

Part4:PDO(PHP Data Object)データベース抽象化レイヤクラス(2)

著者:岩切洋一(IWAKIRI, Yohichi)   2005/3/30
1   2  次のページ
PDO(PHP Database Object)の特徴(1)

   前回で簡単に触れましたが、あらためてコンセプトとして挙げられている4点を検証しつつ、PDOの特徴を見ていきましょう。
ライトウェイト
   PDO関連クラス一覧表からもわかるように、PDOは非常にシンプルなクラス構成と直感的なメソッドで成り立っています。スクリプトの記述が容易である点を、例を見ながら解説しましょう。まず、PDOの導入で追加されるクラス・メソッドの一覧を示します(表1、表2、表3)。

表1:PDOクラス
メソッド 戻り値 概要
__construct() PDO class コンストラクタ
prepare() PDOStatemant class プリペアドステートメントの作成
beginTransactin() boolean トランザクションの開始
exec() boolean SQLの実行
commit() boolean コミットの発行
rollBack() boolean ロールバックの発行
lastInsertId() Int 最終インサートIDの取得
getAttribute() Int アトリビュートの取得
setAttribute() boolean アトリビュートの構成
errorCode() Array エラーコードの取得
errorInfo() Array エラー情報の取得
表2:PDOStatementクラス
メソッド 戻り値 概要
execute() boolean プリペアドステートメントの実行
fetch() Array レコードの取得
bindParam() boolean パラメータのバインド
bindColumn() boolean カラムのバインド
rowCount() Int 影響を受けたレコード数を返す
fetchSingle() Array 単一レコードの取得
fetchAll() Array 全レコードの取得
getAttribute() PDO class アトリビュートの取得
setAttribute() boolean アトリビュートの設定
errorCode() Array エラーコードの取得
errorInfo() Array エラー情報の取得
表3:PDOExceptionクラス
メソッド 戻り値 概要
__clone() PDOException クラス・オブジェクトの複製
__construct() PDOException コンストラクタ
getCode() Int 例外コードの取得
getFile() String カラムのバインド
getLine() Int 例外発生行番号の取得
getMessage() String 例外メッセージの取得
getTrace() PDO class バックトレースの取得
getTraceAsString() String バックトレースを文字列で取得
__toString() String オブジェクトを文字列に変換

   データベースへの接続テーブルの作成を行うスクリプトはリスト1のようになります。

リスト1:データベース接続
try{
// tryブロック内で接続処理・テーブルの作成
$dbh = new PDO("mysql: dbname=stock_db; host=hostname", "user", "password");
$dbh->exec('CREATE TABLE stock (item_id INT PRIMARY KEY, number INT) TYPE=innoDB');
$dbh->exec('CREATE TABLE in_item (item_id INT , number INT) TYPE=innoDB');
}
catch (PDOException $e) {
// catchブロックで接続失敗時の処理を行う
die($e->getMessage());
}

   PHP5では、例外処理が行えるのでここで使ってみました。1行目から始まるtryブロック内にデータベース接続処理とテーブル作成のSQLを記述します。PDOによる処理は、3行目のようにDBハンドラオブジェクトを新規に作成することで行われます。PEAR::DBと同様にDSN(Data Source Name)を作成しますが、書式が異なるので注意が必要です(例ではMySQLを使用)。接続に失敗した場合には例外が発生し、PDOExceptionオブジェクトがthrowされます。7行目のcatchブロックで例外を捕捉し、エラー詳細を表示して終了します。エラー判定をtryブロックに含めずに済むため、スクリプトも読みやすくなるでしょう。

1   2  次のページ



著者プロフィール
著者:岩切洋一
「まるごとPHP!Vol.1(インプレス刊)」にて本記事「PDOデータベース抽象化レイヤクラス」の執筆や、「WEB+DB PRESS Vol.18(技術評論社刊)」にて「PEAR実践入門 第4章 使ってみよう!作ってみようPECL」の執筆などを行う。


INDEX
Part4:PDO(PHP Data Object)データベース抽象化レイヤクラス(2)
PDO(PHP Database Object)の特徴(1)
  PDO(PHP Database Object)の特徴(2)