<?php

require_once "MDB2.php";


// データベースアクセスクラス
class CDBAccess
{
	const m_Sql 	= "mysqli";			// 使用するSQL
	const m_User 	= "ユーザ名";		// ユーザ名
	const m_Pass 	= "パスワード";		// パスワード
	const m_Host 	= "localhost";		// ホスト名
	const m_DbName 	= "データベース名";	// データベース名
	const m_TblName	= "テーブル名";		// テーブル名
	
	protected $m_Db;				// データベース
	protected $m_Result;			// クエリの結果
	
	// コンストラクタ
	function __construct()
	{
		// メンバ変数の初期化
		$this->m_Db = NULL;
		$this->m_Result = NULL;
		
		// 接続
		$this->Connect();
	}
	
	// デストラクタ
	function __destruct()
	{
		if($this->m_Db != NULL)
		{
			$this->DisConnect();
		}
	}
	
	// データベース接続
	public function Connect()
	{
		// 接続文字列を作成
		$str = sprintf("%s://%s:%s@%s/%s", self::m_Sql, self::m_User, self::m_Pass, self::m_Host, self::m_DbName);
	
		// 接続処理
		$this->m_Db =& MDB2::connect($str);
		
		// エラー処理
		if( PEAR::isError( $this->m_Db ) ) 
		{
			exit("以下の接続が失敗しました<br>" .$str);	
		}
	}
	
	// データベース切断
	public function DisConnect()
	{
		$this->m_Db->disconnect();
	}
	
	// クエリ実行
	public function Query($sql)
	{
		// クエリの実行し結果を取得
		$this->m_Result =& $this->m_Db->query($sql);
		
		// エラー処理
		if( PEAR::isError($this->m_Result) )
		{
			exit("以下のクエリが失敗しました<br>" .$sql);
		}
	}
	
	// クエリの結果の取得データの行数を返す
	public function numRows()
	{
		$this->Error();
		return $this->m_Result->numRows();
	}
	
	// クォート
	public function quote($var, $type)
	{
		return $this->m_Db->quote($var, $type);
	}
	
	public function GetTblName()
	{
		return self::m_TblName;
	}
	
	// レコードを取得し返す
	public function FetchRow()
	{
		$this->Error();
		return $this->m_Result->fetchRow(MDB2_FETCHMODE_OBJECT);
	}
	
	// エラーチェック
	protected function Error()
	{
		if( $this->m_Db == NULL )
		{
			exit("エラー: 不正なメンバ関数呼び出しが行われました。データベースを取得していません。\n");
		}
		if( $this->m_Result == NULL )
		{
			exit("エラー: 不正なメンバ関数呼び出しが行われました。クエリを実行していません。\n");
		}
	}
	
	// アクセサ
	function __set($name, $value)
	{
		exit("エラー: 不明なメンバ変数" . $name . "に" . $value . "を代入しようとしました\n");
	}
	
	function __get($name)
	{
		exit("エラー: 不明なメンバ変数" . $name . "の値を得ようとしました\n");
	}
	
	function __call($name, $param)
	{
		exit("エラー: 不明なメンバ関数" . $name . "(" . $param . ") が呼び出されました\n");
		
	}
}

?>