<?php /* データベース管理クラス */ class DBManager{ private static $ini_array = NULL; private static $instance = NULL; private static $con = NULL; private static $result_cnt = NULL; private static $result_data = NULL; /* コンストラクタ */ function __construct(){ self::get_ini(); self::_connect(); } /* デストラクタ */ function __destruct(){ self::$con = null; } /* 単一のインスタンスを返す */ public static function __instance(){ if ( is_null( self::$instance ) ) { self::$instance = new self; } return self::$instance; } /* db接続設定ファイルの読み込み */ private function get_ini(){ $ini=Setting::get_ini_file( "/*db接続情報を記載したiniファイル*/" , true ); /*自作クラス関数のため、コピーしただけでは、使えません。*/ if( $_SERVER["SERVER_NAME"] == "localhost" ){ $work = 'development'; }else{ $work = 'production'; } return self::$ini_array = $ini[$work]; } /* dbへの接続 @return object $con */ private function _connect(){ $ini_array=self::$ini_array; $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES '.$ini_array['charset'], PDO::ATTR_PERSISTENT => true, ); $link = $ini_array['sql'].':host='.$ini_array['host'].';dbname='.$ini_array['dbname']; $user = $ini_array['user']; $password = $ini_array['password']; try{ $con = new PDO( $link, $user, $password, $options ); if ($con == null){ throw new PDOException( 'CONNECT LOOSE' ); } }catch ( PDOException $e ){ print( 'Error:'.$e->getMessage() ); die(); } return self::$con = $con; } /* トランザクション */ public function Transaction_start(){ self::$con->beginTransaction(); } /* コミット */ public function Commit(){ self::$con->commit(); } /* ロールバック */ public function Rollback(){ self::$con->rollBack(); } /* insert処理 @param string $sql sql @param array $array 挿入配列(連想配列不可) @return boolean sql = "inset into table_name (colunm1,colunm2) values(?,?)"; */ public function insert( $sql , $array ){ $this->dbmethod( $sql , $array ); } /* update処理 @param string $sql sql @param array $array 挿入配列(連想配列不可) array("colunm1_val","colunm2_val","colunm_val") @return boolean sql = "update table_name set colunm1 = ? , colunm2 = ? where colunm = ?"; */ public function update( $sql , $array ){ $this->dbmethod( $sql , $array ); } /* select処理 @param string $sql sql sql ="select * from table_name where colunm =?"; result_array = $db->select($sql,array(colunm_val)); @param string $array array array("colunm_val") @return array $data */ public function select( $sql ,$array=array() ){ $this->dbmethod( $sql , $array ); $array = array(); while( $date = self::$result_data->fetch( PDO::FETCH_ASSOC ) ){ $array[] = $date;//フィールドごと //予備 // foreach ($date as $key=>$value){ // $array[$key][]=$value;//カラムごと // } } $con = null; return $array; } /* 実行用関数 @param string $sql sql @param array $array 挿入配列(連想配列不可) @return boolean */ private function dbmethod($sql ,$array){ $con = self::$con; $stm = $con->prepare( $sql ); for( $i = 0; $i < count( $array ); $i++ ){ $stm->bindParam( $i+1 , $array[$i] , PDO::PARAM_STR ); } self::$result_data = $stm; $flag = $stm->execute(); $count = $stm->rowCount(); if( ! $flag ){ $result=false; }else{ self::$result_cnt = $count; $result = true; } $con = null; return $result; } /* 件数取得(更新、挿入) @return int $result_cnt 更新、挿入 件数 */ public function get_result_cnt(){ return self::$result_cnt; } }