データベースアクセスクラス
やっぱりDBアクセス用のライブラリがないと不便なので、簡易的なクラスを作ることに。
次のMoonyのリリースに含める予定、クラス名はMoony_DB。
- 内部でPEAR::DBを利用
- プレースホルダーを含むSQLを実行可能
- 簡単なトランザクション制御が可能
- 検索メソッドを実行した場合、検索結果を連想配列の配列として返す
- 更新メソッドを実行した場合、影響を及ぼしたレコード数を返す
- 実行するSQLをログ出力することが可能(ログレベルはデバッグ)
- 検索結果の文字エンコーディングの自動変換を行う
検索メソッドはこんな感じ:
function query($sql, $params = null, $log = false) { $result = array(); if ($log) { Moony_Logger::debug($this->_getLog($sql, $params), __FILE__, __LINE__); } $result = $this->_db->getAll($sql, $params, DB_FETCHMODE_ASSOC); if (DB::isError($result)) { if ($this->_in_trans) { $this->rollback(); } Moony_Error::raise($result->getMessage(), __FILE__, __LINE__); } if (isset($this->_db_encoding)) { mb_convert_variables(MOONY_INTERNAL_ENCODING, $this->_db_encoding, &$result); } return $result; }