Changeset 18784


Ignore:
Timestamp:
2010/08/12 19:33:49 (14 years ago)
Author:
nanasess
bzr:base-revision:
svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18783
bzr:committer:
Kentaro Ohkouchi <ohkouchi@loop-az.jp>
bzr:file-ids:

data/class/SC_Query.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_Query.php
data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php 15123@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fdb%2Fdbfactory%2FSC_DB_DBFactory_MYSQL.php
data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php 15123@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fdb%2Fdbfactory%2FSC_DB_DBFactory_PGSQL.php
data/class/helper/SC_Helper_DB.php 15176@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_DB.php
bzr:mapping-version:
v4
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
ohkouchi@loop-az.jp-20100812103342-5fc7rp06997dbg6e
bzr:revno:
2267
bzr:revprop:branch-nick:
branches/version-2_5-dev
bzr:root:
branches/version-2_5-dev
bzr:text-parents:

data/class/SC_Query.php ohkouchi@loop-az.jp-20100804045224-nsulc26bh1ttqfrb
data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18777
data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php ohkouchi@loop-az.jp-20100804045224-nsulc26bh1ttqfrb
data/class/helper/SC_Helper_DB.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18777
bzr:timestamp:
2010-08-12 19:33:42.628999949 +0900
bzr:user-agent:
bzr2.1.2+bzr-svn1.0.2
svn:original-date:
2010-08-12T10:33:42.629000Z
Message:

#565関連(SC_DbConnの削除)

  • data/class/SC_Query.php
    • PHPDoc コメントを追加
    • コンストラクタの第二引数を $force_run に変更
    • SC_Query::isError() を PEAR::isError() に変更し, @deprecated コメント付与
    • SC_Query::getSingletonInstance() 関数を追加
    • SC_Query::inTransaction() 関数を追加
    • 内部変数のリファレンスを修正
    • setXXX 関数を Chain of Responsibility パターンに対応
  • data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
    • SC_Query のインスタンスを SC_Query::getSingletonInstance() で取得するよう修正
  • data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php
    • SC_Query のインスタンスを SC_Query::getSingletonInstance() で取得するよう修正
  • data/class/helper/SC_Helper_DB.php
    • SC_Query のインスタンスを SC_Query::getSingletonInstance() で取得するよう修正
Location:
branches/version-2_5-dev/data/class
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/SC_Query.php

    r18775 r18784  
    3333 */ 
    3434class SC_Query { 
     35 
     36    var $instance; 
    3537    var $option; 
    3638    var $where; 
     
    3840    var $groupby; 
    3941    var $order; 
     42    var $force_run; 
    4043 
    4144    /** 
    4245     * コンストラクタ. 
    4346     * 
    44      * @param $dsn 
    45      * @param boolean $err_disp エラー表示を行うかどうか 
     47     * @param string $dsn データソース名 
     48     * @param boolean $force_run エラーが発生しても処理を続行する場合 true 
    4649     * @param boolean $new 新規に接続を行うかどうか 
    47      * @return SC_Query 
    48      */ 
    49     function SC_Query($dsn = "", $err_disp = true, $new = false) { 
     50     */ 
     51    function SC_Query($dsn = "", $force_run = true, $new = false) { 
    5052 
    5153        if ($dsn == "") { 
     
    6466        } 
    6567 
    66         if (!$this->isError()) { 
     68        if (!PEAR::isError($this->conn)) { 
    6769            $this->conn->setCharset(CHAR_CODE); 
    6870            $this->conn->setFetchMode(MDB2_FETCHMODE_ASSOC); 
    6971        } 
     72 
    7073        $this->dbFactory = SC_DB_DBFactory_Ex::getInstance(); 
     74        $this->force_run = $force_run; 
    7175        $this->where = ""; 
    7276    } 
    7377 
    7478    /** 
     79     * シングルトンの SC_Query インスタンスを取得する. 
     80     * 
     81     * @param string $dsn データソース名 
     82     * @param boolean $force_run エラーが発生しても処理を続行する場合 true 
     83     * @param boolean $new 新規に接続を行うかどうか 
     84     * @return SC_Query シングルトンの SC_Query インスタンス 
     85     */ 
     86    function getSingletonInstance($dsn = "", $force_run = true, $new = false) { 
     87        if (is_null($this->instance)) { 
     88            $this->instance =& new SC_Query($dsn = "", $force_run = true, 
     89                                            $new = false); 
     90        } 
     91        return $this->instance; 
     92    } 
     93 
     94    /** 
    7595     *  エラー判定を行う. 
    7696     * 
     97     * @deprecated PEAR::isError() を使用して下さい 
    7798     * @return boolean 
    7899     */ 
     
    109130     * @param string $where WHERE句 
    110131     * @param array $arrval プレースホルダ 
    111      * @param integer $fetchmode 使用するフェッチモード。デフォルトは DB_FETCHMODE_ASSOC。 
     132     * @param integer $fetchmode 使用するフェッチモード。デフォルトは MDB2_FETCHMODE_ASSOC。 
    112133     * @return array|null 
    113134     */ 
     
    131152    } 
    132153 
     154    /** 
     155     * トランザクションをコミットする. 
     156     * 
     157     * @return MDB2_OK 成功した場合は MDB2_OK; 
     158     *         失敗した場合は PEAR::Error オブジェクト 
     159     */ 
    133160    function commit() { 
    134         $this->conn->commit(); 
    135     } 
    136  
     161        return $this->conn->commit(); 
     162    } 
     163 
     164    /** 
     165     * トランザクションを開始する. 
     166     * 
     167     * @return MDB2_OK 成功した場合は MDB2_OK; 
     168     *         失敗した場合は PEAR::Error オブジェクト 
     169     */ 
    137170    function begin() { 
    138         $this->conn->beginTransaction(); 
    139     } 
    140  
     171        return $this->conn->beginTransaction(); 
     172    } 
     173 
     174    /** 
     175     * トランザクションをロールバックする. 
     176     * 
     177     * @return MDB2_OK 成功した場合は MDB2_OK; 
     178     *         失敗した場合は PEAR::Error オブジェクト 
     179     */ 
    141180    function rollback() { 
    142         $this->conn->rollback(); 
    143     } 
    144  
     181        return $this->conn->rollback(); 
     182    } 
     183 
     184    /** 
     185     * トランザクションが開始されているかチェックする. 
     186     * 
     187     * @return boolean トランザクションが開始されている場合 true 
     188     */ 
     189    function inTransaction() { 
     190        return $this->conn->inTransaction(); 
     191    } 
     192 
     193    /** 
     194     * 更新系の SQL を実行する. 
     195     * 
     196     * この関数は SC_Query::query() のエイリアスです. 
     197     * 
     198     * FIXME MDB2::exec() の実装であるべき 
     199     */ 
    145200    function exec($str, $arrval = array()) { 
    146         // FIXME MDB2::exec() の実装であるべき 
    147         $this->query($str, $arrval); 
     201        return $this->query($str, $arrval); 
    148202    } 
    149203 
     
    160214        $sql = $this->dbFactory->sfChangeMySQL($sql); 
    161215 
    162         $sth = $this->conn->prepare($sql); 
    163         if (PEAR::isError($sth)) { 
    164             /* 
    165              * XXX インストーラのテーブルチェックに失敗してしまう. 
    166              * エラーハンドリングの方法を要検討 
    167              */ 
    168             return; 
    169         } 
    170         $affected = $sth->execute($arrval); 
    171  
    172         if (PEAR::isError($affected)) { 
    173             trigger_error($affected->getMessage(), E_USER_ERROR); 
     216        $sth =& $this->prepare($sql); 
     217        if (PEAR::isError($sth) && $this->force_run) { 
     218            return; 
     219        } 
     220 
     221        $affected =& $this->execute($sth, $arrval); 
     222        if (PEAR::isError($affected) && $this->force_run) { 
     223            return; 
    174224        } 
    175225 
     
    177227    } 
    178228 
     229    /** 
     230     * 構築した SELECT 文を取得する. 
     231     * 
     232     * @param string $col SELECT 文に含めるカラム名 
     233     * @param string $table SELECT 文に含めるテーブル名 
     234     * @param string $where SELECT 文に含める WHERE 句 
     235     * @return string 構築済みの SELECT 文 
     236     */ 
    179237    function getSql($col, $table, $where = '') { 
    180238        $sqlse = "SELECT $col FROM $table"; 
     
    192250    } 
    193251 
     252    /** 
     253     * SELECT 文の末尾に付与する SQL を設定する. 
     254     * 
     255     * この関数で設定した値は SC_Query::getSql() で使用されます. 
     256     * 
     257     * @param string $str 付与する SQL 文 
     258     * @return SC_Query 自分自身のインスタンス 
     259     */ 
    194260    function setOption($str) { 
    195261        $this->option = $str; 
    196     } 
    197  
    198     // TODO MDB2::setLimit() を使用する 
    199     function setLimitOffset($limit, $offset = 0, $return = false) { 
     262        return $this; 
     263    } 
     264 
     265    /** 
     266     * SELECT 文に付与する LIMIT, OFFSET 句を設定する. 
     267     * 
     268     * この関数で設定した値は SC_Query::getSql() で使用されます. 
     269     * TODO MDB2::setLimit() を使用する 
     270     * 
     271     * @param integer $limit LIMIT 句に付与する値 
     272     * @param integer $offset OFFSET 句に付与する値 
     273     * @return SC_Query 自分自身のインスタンス 
     274     */ 
     275    function setLimitOffset($limit, $offset = 0) { 
    200276        if (is_numeric($limit) && is_numeric($offset)){ 
    201277 
    202278            $option = " LIMIT " . $limit; 
    203279            $option.= " OFFSET " . $offset; 
    204  
    205             if($return){ 
    206                 return $option; 
    207             }else{ 
    208                 $this->option.= $option; 
    209             } 
    210         } 
    211     } 
    212  
     280            $this->option .= $option; 
     281        } 
     282        return $this; 
     283    } 
     284 
     285    /** 
     286     * SELECT 文に付与する GROUP BY 句を設定する. 
     287     * 
     288     * この関数で設定した値は SC_Query::getSql() で使用されます. 
     289     * 
     290     * @param string $str GROUP BY 句に付与する文字列 
     291     * @return SC_Query 自分自身のインスタンス 
     292     */ 
    213293    function setGroupBy($str) { 
    214294        if (strlen($str) == 0) { 
     
    217297            $this->groupby = "GROUP BY " . $str; 
    218298        } 
    219     } 
    220  
    221     function andwhere($str) { 
     299        return $this; 
     300    } 
     301 
     302    /** 
     303     * SELECT 文の WHERE 句に付与する AND 条件を設定する. 
     304     * 
     305     * この関数で設定した値は SC_Query::getSql() で使用されます. 
     306     * 
     307     * @param string $str WHERE 句に付与する AND 条件の文字列 
     308     * @return SC_Query 自分自身のインスタンス 
     309     */ 
     310    function andWhere($str) { 
    222311        if($this->where != "") { 
    223312            $this->where .= " AND " . $str; 
     
    225314            $this->where = $str; 
    226315        } 
    227     } 
    228  
     316        return $this; 
     317    } 
     318 
     319    /** 
     320     * SELECT 文の WHERE 句に付与する OR 条件を設定する. 
     321     * 
     322     * この関数で設定した値は SC_Query::getSql() で使用されます. 
     323     * 
     324     * @param string $str WHERE 句に付与する OR 条件の文字列 
     325     * @return SC_Query 自分自身のインスタンス 
     326     */ 
    229327    function orWhere($str) { 
    230328        if($this->where != "") { 
     
    233331            $this->where = $str; 
    234332        } 
    235     } 
    236  
     333        return $this; 
     334    } 
     335 
     336    /** 
     337     * SELECT 文に付与する WHERE 句を設定する. 
     338     * 
     339     * この関数で設定した値は SC_Query::getSql() で使用されます. 
     340     * 
     341     * @param string $str WHERE 句に付与する文字列 
     342     * @return SC_Query 自分自身のインスタンス 
     343     */ 
    237344    function setWhere($str) { 
    238345        $this->where = $str; 
    239     } 
    240  
     346        return $this; 
     347    } 
     348 
     349    /** 
     350     * SELECT 文に付与する ORDER BY 句を設定する. 
     351     * 
     352     * この関数で設定した値は SC_Query::getSql() で使用されます. 
     353     * 
     354     * @param string $str ORDER BY 句に付与する文字列 
     355     * @return SC_Query 自分自身のインスタンス 
     356     */ 
    241357    function setOrder($str) { 
    242358        if (strlen($str) == 0) { 
     
    245361            $this->order = "ORDER BY " . $str; 
    246362        } 
    247     } 
    248  
    249  
     363        return $this; 
     364    } 
     365 
     366    /** 
     367     * SELECT 文に付与する LIMIT 句を設定する. 
     368     * 
     369     * この関数で設定した値は SC_Query::getSql() で使用されます. 
     370     * 
     371     * @param integer $limit LIMIT 句に設定する値 
     372     * @return SC_Query 自分自身のインスタンス 
     373     */ 
    250374    function setLimit($limit){ 
    251375        if ( is_numeric($limit)){ 
    252376            $this->option = " LIMIT " .$limit; 
    253377        } 
    254     } 
    255  
     378        return $this; 
     379    } 
     380 
     381    /** 
     382     * SELECT 文に付与する OFFSET 句を設定する. 
     383     * 
     384     * この関数で設定した値は SC_Query::getSql() で使用されます. 
     385     * 
     386     * @param integer $offset LIMIT 句に設定する値 
     387     * @return SC_Query 自分自身のインスタンス 
     388     */ 
    256389    function setOffset($offset) { 
    257390        if ( is_numeric($offset)){ 
    258391            $this->offset = " OFFSET " .$offset; 
    259392        } 
     393        return $this; 
    260394    } 
    261395 
     
    352486    } 
    353487 
    354     // MAX文の実行 
     488    /** 
     489     * MAX文を実行する. 
     490     * 
     491     * @param string $table テーブル名 
     492     * @param string $col カラム名 
     493     * @param string $where 付与する WHERE 句 
     494     * @param array $arrval ブレースホルダに挿入する値 
     495     * @return integer MAX文の実行結果 
     496     */ 
    355497    function max($table, $col, $where = "", $arrval = array()) { 
    356498        $ret = $this->get($table, "MAX($col)", $where, $arrval); 
     
    358500    } 
    359501 
    360     // MIN文の実行 
     502    /** 
     503     * MIN文を実行する. 
     504     * 
     505     * @param string $table テーブル名 
     506     * @param string $col カラム名 
     507     * @param string $where 付与する WHERE 句 
     508     * @param array $arrval ブレースホルダに挿入する値 
     509     * @return integer MIN文の実行結果 
     510     */ 
    361511    function min($table, $col, $where = "", $arrval = array()) { 
    362512        $ret = $this->get($table, "MIN($col)", $where, $arrval); 
     
    364514    } 
    365515 
    366     // 特定のカラムの値を取得 
     516    /** 
     517     * SQL を構築して, 特定のカラムの値を取得する. 
     518     * 
     519     * @param string $table テーブル名 
     520     * @param string $col カラム名 
     521     * @param string $where 付与する WHERE 句 
     522     * @param array $arrval ブレースホルダに挿入する値 
     523     * @return mixed SQL の実行結果 
     524     */ 
    367525    function get($table, $col, $where = "", $arrval = array()) { 
    368526        $sqlse = $this->getSql($col, $table, $where); 
     
    372530    } 
    373531 
     532    /** 
     533     * SQL を指定して, 特定のカラムの値を取得する. 
     534     * 
     535     * @param string $sql 実行する SQL 
     536     * @param array $arrval ブレースホルダに挿入する値 
     537     * @return mixed SQL の実行結果 
     538     */ 
    374539    function getOne($sql, $arrval = array()) { 
    375540 
    376541        $sql = $this->dbFactory->sfChangeMySQL($sql); 
    377542 
    378         $sth = $this->conn->prepare($sql); 
    379         $affected = $sth->execute($arrval); 
    380  
    381         if (PEAR::isError($affected)) { 
    382             trigger_error($affected->getMessage(), E_USER_ERROR); 
     543        $sth =& $this->prepare($sql); 
     544        if (PEAR::isError($sth) && $this->force_run) { 
     545            return; 
     546        } 
     547 
     548        $affected =& $this->execute($sth, $arrval); 
     549        if (PEAR::isError($affected) && $this->force_run) { 
     550            return; 
    383551        } 
    384552 
     
    393561     * @param string $where WHERE句 
    394562     * @param array $arrVal プレースホルダ配列 
    395      * @param integer $fetchmode 使用するフェッチモード。デフォルトは DB_FETCHMODE_ASSOC。 
     563     * @param integer $fetchmode 使用するフェッチモード。デフォルトは MDB2_FETCHMODE_ASSOC。 
    396564     * @return array array('カラム名' => '値', ...)の連想配列 
    397565     */ 
     
    401569        $sql = $this->dbFactory->sfChangeMySQL($sql); 
    402570 
    403         $sth = $this->conn->prepare($sql); 
    404         $affected = $sth->execute($arrVal); 
    405  
    406         if (PEAR::isError($affected)) { 
    407             trigger_error($affected->getMessage(), E_USER_ERROR); 
     571        $sth =& $this->prepare($sql); 
     572        if (PEAR::isError($sth) && $this->force_run) { 
     573            return; 
     574        } 
     575 
     576        $affected =& $this->execute($sth, $arrVal); 
     577        if (PEAR::isError($affected) && $this->force_run) { 
     578            return; 
    408579        } 
    409580 
     
    411582    } 
    412583 
    413     // 1列取得 
     584    /** 
     585     * SELECT 文の実行結果を 1行のみ取得する. 
     586     * 
     587     * @param string $table テーブル名 
     588     * @param string $col カラム名 
     589     * @param string $where 付与する WHERE 句 
     590     * @param array $arrval ブレースホルダに挿入する値 
     591     * @return array SQL の実行結果の配列 
     592     */ 
    414593    function getCol($table, $col, $where = "", $arrval = array()) { 
    415594        $sql = $this->getSql($col, $table, $where); 
    416595        $sql = $this->dbFactory->sfChangeMySQL($sql); 
    417596 
    418         $sth = $this->conn->prepare($sql); 
    419         $affected = $sth->execute($arrval); 
    420  
    421         if (PEAR::isError($affected)) { 
    422             trigger_error($affected->getMessage(), E_USER_ERROR); 
     597        $sth =& $this->prepare($sql); 
     598        if (PEAR::isError($sth) && $this->force_run) { 
     599            return; 
     600        } 
     601 
     602        $affected =& $this->execute($sth, $arrval); 
     603        if (PEAR::isError($affected) && $this->force_run) { 
     604            return; 
    423605        } 
    424606 
     
    444626    } 
    445627 
     628    // TODO MDB2::nextID のエイリアスとする 
    446629    function nextval($table, $colname) { 
    447630        $sql = ""; 
     
    458641    } 
    459642 
     643    // TODO MDB2::currID のエイリアスとする 
    460644    function currval($table, $colname) { 
    461645        $sql = ""; 
     
    471655    } 
    472656 
     657    // TODO MDB2 に該当関数が無いため実装を要検討 
    473658    function setval($table, $colname, $data) { 
    474659        $sql = ""; 
     
    485670    } 
    486671 
    487     // XXX 更新系には exec() を使用するべき 
     672    /** 
     673     * SQL を実行する. 
     674     * 
     675     * XXX 更新系には exec() を使用するべき 
     676     * 
     677     * @param string $n 実行する SQL 文 
     678     * @param array $arrval ブレースホルダに挿入する値 
     679     * @return array SQL の実行結果の配列 
     680     */ 
    488681    function query($n ,$arr = array(), $ignore_err = false){ 
    489682 
    490683        $n = $this->dbFactory->sfChangeMySQL($n); 
    491684 
    492         $sth = $this->conn->prepare($n); 
    493         $result = $sth->execute($arr); 
    494  
    495         if (PEAR::isError($result)) { 
    496             /* 
    497              * XXX インストーラのテーブルチェックに失敗してしまう. 
    498              * エラーハンドリングの方法を要検討 
    499              */ 
    500             //trigger_error($result->getMessage(), E_USER_ERROR); 
     685        $sth =& $this->prepare($n); 
     686        if (PEAR::isError($sth) && $this->force_run) { 
     687            return; 
     688        } 
     689 
     690        $result = $this->execute($sth, $arr); 
     691        if (PEAR::isError($result) && $this->force_run) { 
     692            return; 
    501693        } 
    502694 
     
    543735        return $this->conn->quote($val); 
    544736    } 
     737 
     738    /** 
     739     * プリペアドステートメントを構築する. 
     740     * 
     741     * @access private 
     742     * @param string $sql プリペアドステートメントを構築する SQL 
     743     * @return MDB2_Statement_Common プリペアドステートメントインスタンス 
     744     */ 
     745    function prepare($sql) { 
     746        $sth =& $this->conn->prepare($sql); 
     747        if (PEAR::isError($sth)) { 
     748            if (!$this->force_run) { 
     749               trigger_error($sth->getMessage(), E_USER_ERROR); 
     750            } 
     751        } 
     752        return $sth; 
     753    } 
     754 
     755    /** 
     756     * プリペアドクエリを実行する. 
     757     * 
     758     * @access private 
     759     * @param MDB2_Statement_Common プリペアドステートメントインスタンス 
     760     * @param array $arrVal ブレースホルダに挿入する配列 
     761     * @return MDB2_Result 結果セットのインスタンス 
     762     */ 
     763    function execute(&$sth, $arrVal = array()) { 
     764        $affected =& $sth->execute($arrVal); 
     765        if (PEAR::isError($affected)) { 
     766            if (!$this->force_run) { 
     767               trigger_error($affected->getMessage(), E_USER_ERROR); 
     768            } 
     769        } 
     770        return $affected; 
     771    } 
    545772} 
    546773 
  • branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php

    r18777 r18784  
    3838class SC_DB_DBFactory_MYSQL extends SC_DB_DBFactory { 
    3939 
     40    /** SC_Query インスタンス */ 
     41    var $objQuery; 
     42 
    4043    /** 
    4144     * DBのバージョンを取得する. 
     
    4548     */ 
    4649    function sfGetDBVersion($dsn = "") { 
    47         $objQuery = new SC_Query($this->getDSN($dsn), true, true); 
     50        $objQuery =& SC_Query::getSingletonInstance(); 
    4851        $val = $objQuery->getOne("select version()"); 
    4952        return "MySQL " . $val; 
     
    7780     */ 
    7881    function getCharSet() { 
    79         $objQuery = new SC_Query(); 
     82        $objQuery =& SC_Query::getSingletonInstance(); 
    8083        $arrRet = $objQuery->getAll("SHOW VARIABLES LIKE 'char%'"); 
    8184        return $arrRet; 
     
    9093    function getTableExistsSql($table_name) { 
    9194        // XXX 何故かブレースホルダが使えない 
    92         $objQuery = new SC_Query(); 
     95        $objQuery =& SC_Query::getSingletonInstance(); 
    9396        return "SHOW TABLE STATUS LIKE " . $objQuery->quote($table_name); 
    9497    } 
     
    102105     */ 
    103106    function getTableIndex($index_name, $table_name = "") { 
    104         $objQuery = new SC_Query("", true, true); 
     107        $objQuery =& SC_Query::getSingletonInstance(); 
    105108        return $objQuery->getAll("SHOW INDEX FROM " . $table_name . " WHERE Key_name = ?", 
    106109                                 array($index_name)); 
     
    117120     */ 
    118121    function createTableIndex($index_name, $table_name, $col_name, $length = 0) { 
    119         $objQuery = new SC_Query($dsn, true, true); 
     122        $objQuery =& SC_Query::getSingletonInstance(); 
    120123        $objQuery->query("CREATE INDEX ? ON ? (?(?))", array($index_name, $table_name, $col_name, $length)); 
    121124    } 
     
    128131     */ 
    129132    function sfGetColumnList($table_name) { 
    130         $objQuery = new SC_Query(); 
     133        $objQuery =& SC_Query::getSingletonInstance(); 
    131134        $sql = "SHOW COLUMNS FROM " . $table_name; 
    132135        $arrColList = $objQuery->getAll($sql); 
     
    144147     */ 
    145148    function findTableNames($expression = "") { 
    146         $objQuery = new SC_Query(); 
     149        $objQuery =& SC_Query::getSingletonInstance(); 
    147150        $sql = "SHOW TABLES LIKE ?"; 
    148151        $arrColList = $objQuery->getAll($sql, array("%" . $expression . "%")); 
  • branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php

    r18775 r18784  
    4646     */ 
    4747    function sfGetDBVersion($dsn = "") { 
    48         $objQuery = new SC_Query($this->getDSN($dsn), true, true); 
     48        $objQuery =& SC_Query::getSingletonInstance(); 
    4949        $val = $objQuery->getOne("select version()"); 
    5050        $arrLine = split(" " , $val); 
     
    7272     */ 
    7373    function getTableExistsSql($table_name) { 
    74         $objQuery = new SC_Query(); 
     74        $objQuery =& SC_Query::getSingletonInstance(); 
    7575        return "  SELECT relname " 
    7676             . "    FROM pg_class " 
     
    8888     */ 
    8989    function getTableIndex($index_name, $table_name = "") { 
    90         $objQuery = new SC_Query("", true, true); 
     90        $objQuery =& SC_Query::getSingletonInstance(); 
    9191        return $objQuery->getAll("SELECT relname FROM pg_class WHERE relname = ?", 
    9292                                 array($index_name)); 
     
    103103     */ 
    104104    function createTableIndex($index_name, $table_name, $col_name, $length = 0) { 
    105         $objQuery = new SC_Query($dsn, true, true); 
     105        $objQuery =& SC_Query::getSingletonInstance(); 
    106106        $objQuery->query("CREATE INDEX ? ON ? (?)", array($index_name, $table_name, $col_name)); 
    107107    } 
     
    114114     */ 
    115115    function sfGetColumnList($table_name) { 
    116         $objQuery = new SC_Query(); 
     116        $objQuery =& SC_Query::getSingletonInstance(); 
    117117        $sql = "  SELECT a.attname " 
    118118             . "    FROM pg_class c, pg_attribute a " 
     
    137137     */ 
    138138    function findTableNames($expression = "") { 
    139         $objQuery = new SC_Query(); 
     139        $objQuery =& SC_Query::getSingletonInstance(); 
    140140        $sql = "   SELECT c.relname AS name, " 
    141141            .  "     CASE c.relkind " 
  • branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php

    r18777 r18784  
    7070        $dsn = $dbFactory->getDSN($dsn); 
    7171 
    72         $objQuery = new SC_Query($dsn, true, true); 
     72        $objQuery =& SC_Query::getSingletonInstance(); 
    7373        // 正常に接続されている場合 
    7474        if(!$objQuery->isError()) { 
     
    109109        if(!$this->sfTabaleExists($table_name, $dsn)) return false; 
    110110 
    111         $objQuery = new SC_Query($dsn, true, true); 
     111        $objQuery =& SC_Query::getSingletonInstance(); 
    112112        // 正常に接続されている場合 
    113113        if(!$objQuery->isError()) { 
     
    155155        if (!$this->sfTabaleExists($table_name, $dsn)) return false; 
    156156 
    157         $objQuery = new SC_Query($dsn, true, true); 
     157        $objQuery =& SC_Query::getSingletonInstance(); 
    158158        $arrRet = $dbFactory->getTableIndex($index_name, $table_name); 
    159159 
     
    186186        $dsn = $dbFactory->getDSN($dsn); 
    187187 
    188         $objQuery = new SC_Query($dsn, true, true); 
     188        $objQuery =& SC_Query::getSingletonInstance(); 
    189189        $count = $objQuery->count($table_name, $where, $arrval); 
    190190 
     
    211211 
    212212        if ($force || !isset($data)) { 
    213             $objQuery = new SC_Query(); 
     213            $objQuery =& SC_Query::getSingletonInstance(); 
    214214            $arrRet = $objQuery->select('*', 'dtb_baseinfo'); 
    215215 
     
    229229        if(!$this->g_root_on)   { 
    230230            $this->g_root_on = true; 
    231             $objQuery = new SC_Query(); 
     231            $objQuery =& SC_Query::getSingletonInstance(); 
    232232 
    233233            if (!isset($_GET['product_id'])) $_GET['product_id'] = ""; 
     
    267267 
    268268        // 商品規格取得 
    269         $objQuery = new SC_Query(); 
     269        $objQuery =& SC_Query::getSingletonInstance(); 
    270270        $col = 'product_id, deliv_fee, name, product_code, main_list_image, main_image, price01, price02, point_rate, product_class_id, classcategory_id1, classcategory_id2, class_id1, class_id2, stock, stock_unlimited, sale_limit'; 
    271271        $table = 'vw_product_class AS prdcls'; 
     
    284284     */ 
    285285    function sfGetPayment() { 
    286         $objQuery = new SC_Query(); 
     286        $objQuery =& SC_Query::getSingletonInstance(); 
    287287        // 購入金額が条件額以下の項目を取得 
    288288        $where = "del_flg = 0"; 
     
    430430        if($uniqid != "") { 
    431431            // 既存データのチェック 
    432             $objQuery = new SC_Query(); 
     432            $objQuery =& SC_Query::getSingletonInstance(); 
    433433            $where = "order_temp_id = ?"; 
    434434            $cnt = $objQuery->count("dtb_order_temp", $where, array($uniqid)); 
     
    501501     */ 
    502502    function sfEditCustomerData($array, $arrRegistColumn) { 
    503         $objQuery = new SC_Query(); 
     503        $objQuery =& SC_Query::getSingletonInstance(); 
    504504 
    505505        foreach ($arrRegistColumn as $data) { 
     
    535535     */ 
    536536    function sfGetCustomerPoint($order_id, $use_point, $add_point) { 
    537         $objQuery = new SC_Query(); 
     537        $objQuery =& SC_Query::getSingletonInstance(); 
    538538        $arrRet = $objQuery->select("customer_id", "dtb_order", "order_id = ?", array($order_id)); 
    539539        $customer_id = $arrRet[0]['customer_id']; 
     
    563563     */ 
    564564    function sfGetCustomerPointFromCid($customer_id, $use_point, $add_point) { 
    565         $objQuery = new SC_Query(); 
     565        $objQuery =& SC_Query::getSingletonInstance(); 
    566566        if (USE_POINT !== false) { 
    567567            $arrRet = $objQuery->select("point", "dtb_customer", "customer_id = ?", array($customer_id)); 
     
    582582     */ 
    583583    function sfGetCatTree($parent_category_id, $count_check = false) { 
    584         $objQuery = new SC_Query(); 
     584        $objQuery =& SC_Query::getSingletonInstance(); 
    585585        $col = ""; 
    586586        $col .= " cat.category_id,"; 
     
    626626     */ 
    627627    function sfGetMultiCatTree($product_id, $count_check = false) { 
    628         $objQuery = new SC_Query(); 
     628        $objQuery =& SC_Query::getSingletonInstance(); 
    629629        $col = ""; 
    630630        $col .= " cat.category_id,"; 
     
    675675    function sfGetCatCombName($category_id){ 
    676676        // 商品が属するカテゴリIDを縦に取得 
    677         $objQuery = new SC_Query(); 
     677        $objQuery =& SC_Query::getSingletonInstance(); 
    678678        $arrCatID = $this->sfGetParents($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id); 
    679679        $ConbName = ""; 
     
    699699     */ 
    700700    function sfGetCat($category_id){ 
    701         $objQuery = new SC_Query(); 
     701        $objQuery =& SC_Query::getSingletonInstance(); 
    702702 
    703703        // カテゴリーを取得する 
     
    716716    function sfGetFirstCat($category_id){ 
    717717        // 商品が属するカテゴリIDを縦に取得 
    718         $objQuery = new SC_Query(); 
     718        $objQuery =& SC_Query::getSingletonInstance(); 
    719719        $arrRet = array(); 
    720720        $arrCatID = $this->sfGetParents($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id); 
     
    740740     */ 
    741741    function sfGetCategoryList($addwhere = "", $products_check = false, $head = CATEGORY_HEAD) { 
    742         $objQuery = new SC_Query(); 
     742        $objQuery =& SC_Query::getSingletonInstance(); 
    743743        $where = "del_flg = 0"; 
    744744 
     
    778778     */ 
    779779    function sfGetLevelCatList($parent_zero = true) { 
    780         $objQuery = new SC_Query(); 
     780        $objQuery =& SC_Query::getSingletonInstance(); 
    781781 
    782782        // カテゴリ名リストを取得 
     
    838838                $this->g_category_id = array($category_id); 
    839839            } else if (SC_Utils_Ex::sfIsInt($product_id) && $product_id != 0 && $this->sfIsRecord("dtb_products","product_id", $product_id, $status)) { 
    840                 $objQuery = new SC_Query(); 
     840                $objQuery =& SC_Query::getSingletonInstance(); 
    841841                $where = "product_id = ?"; 
    842842                $category_id = $objQuery->getCol("dtb_product_categories", "category_id", "product_id = ?", array($product_id)); 
     
    862862                        "product_id" => $product_id); 
    863863 
    864         $objQuery = new SC_Query(); 
     864        $objQuery =& SC_Query::getSingletonInstance(); 
    865865 
    866866        // 現在の商品カテゴリを取得 
     
    894894                        "product_id" => $product_id); 
    895895 
    896         $objQuery = new SC_Query(); 
     896        $objQuery =& SC_Query::getSingletonInstance(); 
    897897 
    898898        // 現在の商品カテゴリを取得 
     
    925925        $sqlval = array("category_id" => $category_id, 
    926926                        "product_id" => $product_id); 
    927         $objQuery = new SC_Query(); 
     927        $objQuery =& SC_Query::getSingletonInstance(); 
    928928        $objQuery->delete("dtb_product_categories", 
    929929                          "category_id = ? AND product_id = ?", $sqlval); 
     
    938938     */ 
    939939    function updateProductCategories($arrCategory_id, $product_id) { 
    940         $objQuery = new SC_Query(); 
     940        $objQuery =& SC_Query::getSingletonInstance(); 
    941941 
    942942        // 現在のカテゴリ情報を取得 
     
    10511051     */ 
    10521052    function sfGetChildrenArray($table, $pid_name, $id_name, $id) { 
    1053         $objQuery = new SC_Query(); 
     1053        $objQuery =& SC_Query::getSingletonInstance(); 
    10541054        $col = $pid_name . "," . $id_name; 
    10551055         $arrData = $objQuery->select($col, $table); 
     
    11201120     */ 
    11211121    function sfGetParentsArray($table, $pid_name, $id_name, $id) { 
    1122         $objQuery = new SC_Query(); 
     1122        $objQuery =& SC_Query::getSingletonInstance(); 
    11231123        $col = $pid_name . "," . $id_name; 
    11241124        $arrData = $objQuery->select($col, $table); 
     
    11691169     */ 
    11701170    function sfGetOrderTemp($order_temp_id) { 
    1171         $objQuery = new SC_Query(); 
     1171        $objQuery =& SC_Query::getSingletonInstance(); 
    11721172        $where = "order_temp_id = ?"; 
    11731173        $arrRet = $objQuery->select("*", "dtb_order_temp", $where, array($order_temp_id)); 
     
    11841184     */ 
    11851185    function sfGetIDValueList($table, $keyname, $valname) { 
    1186         $objQuery = new SC_Query(); 
     1186        $objQuery =& SC_Query::getSingletonInstance(); 
    11871187        $col = "$keyname, $valname"; 
    11881188        $objQuery->setWhere("del_flg = 0"); 
     
    12081208     */ 
    12091209    function sfRankUp($table, $colname, $id, $andwhere = "") { 
    1210         $objQuery = new SC_Query(); 
     1210        $objQuery =& SC_Query::getSingletonInstance(); 
    12111211        $objQuery->begin(); 
    12121212        $where = "$colname = ?"; 
     
    12481248     */ 
    12491249    function sfRankDown($table, $colname, $id, $andwhere = "") { 
    1250         $objQuery = new SC_Query(); 
     1250        $objQuery =& SC_Query::getSingletonInstance(); 
    12511251        $objQuery->begin(); 
    12521252        $where = "$colname = ?"; 
     
    12881288     */ 
    12891289    function sfMoveRank($tableName, $keyIdColumn, $keyId, $pos, $where = "") { 
    1290         $objQuery = new SC_Query(); 
     1290        $objQuery =& SC_Query::getSingletonInstance(); 
    12911291        $objQuery->begin(); 
    12921292 
     
    13531353    function sfDeleteRankRecord($table, $colname, $id, $andwhere = "", 
    13541354                                $delete = false) { 
    1355         $objQuery = new SC_Query(); 
     1355        $objQuery =& SC_Query::getSingletonInstance(); 
    13561356        $objQuery->begin(); 
    13571357        // 削除レコードのランクを取得する。 
     
    14491449     */ 
    14501450    function sfGetDelivTime($payment_id = "") { 
    1451         $objQuery = new SC_Query(); 
     1451        $objQuery =& SC_Query::getSingletonInstance(); 
    14521452 
    14531453        $deliv_id = ""; 
     
    14791479        $payment_id = isset($arrData['payment_id']) ? $arrData['payment_id'] : ""; 
    14801480 
    1481         $objQuery = new SC_Query(); 
     1481        $objQuery =& SC_Query::getSingletonInstance(); 
    14821482 
    14831483        $deliv_id = ""; 
     
    15051505            } 
    15061506 
    1507             $objQuery = new SC_Query(); 
     1507            $objQuery =& SC_Query::getSingletonInstance(); 
    15081508            $where = "deliv_id = ? AND pref = ?"; 
    15091509            $arrRet= $objQuery->select("fee", "dtb_delivfee", $where, array($deliv_id, $pref)); 
     
    16111611     */ 
    16121612    function sfIsRecord($table, $col, $arrval, $addwhere = "") { 
    1613         $objQuery = new SC_Query(); 
     1613        $objQuery =& SC_Query::getSingletonInstance(); 
    16141614        $arrCol = split("[, ]", $col); 
    16151615 
     
    16811681                $this->g_maker_id = array($maker_id); 
    16821682            } else if (SC_Utils_Ex::sfIsInt($product_id) && $product_id != 0 && $this->sfIsRecord("dtb_products","product_id", $product_id, $status)) { 
    1683                 $objQuery = new SC_Query(); 
     1683                $objQuery =& SC_Query::getSingletonInstance(); 
    16841684                $where = "product_id = ?"; 
    16851685                $maker_id = $objQuery->getCol("dtb_products", "maker_id", "product_id = ?", array($product_id)); 
     
    17031703     */ 
    17041704    function sfGetMakerList($addwhere = "", $products_check = false) { 
    1705         $objQuery = new SC_Query(); 
     1705        $objQuery =& SC_Query::getSingletonInstance(); 
    17061706        $where = "del_flg = 0"; 
    17071707 
     
    17431743     */ 
    17441744    function lfCalcAllProductsDelivFee(&$arrData, &$objCartSess) { 
    1745         $objQuery = new SC_Query(); 
     1745        $objQuery =& SC_Query::getSingletonInstance(); 
    17461746        $deliv_fee_total = 0; 
    17471747        $max = $objCartSess->getMax(); 
     
    17741774     */ 
    17751775    function sfUpdateOrderNameCol($order_id, $temp_table = false) { 
    1776         $objQuery = new SC_Query(); 
     1776        $objQuery =& SC_Query::getSingletonInstance(); 
    17771777 
    17781778        if ($temp_table) { 
     
    18481848     */ 
    18491849    function sfUpdateOrderStatus($orderId, $newStatus = null, $newAddPoint = null, $newUsePoint = null) { 
    1850         $objQuery = new SC_Query(); 
     1850        $objQuery =& SC_Query::getSingletonInstance(); 
    18511851 
    18521852        $arrOrderOld = $objQuery->getRow('dtb_order', 'status, add_point, use_point, customer_id', 'order_id = ?', array($orderId)); 
     
    19551955    function sfExecSqlByFile($sqlFilePath) { 
    19561956        if (file_exists($sqlFilePath)) { 
    1957             $objQuery = new SC_Query(); 
     1957            $objQuery =& SC_Query::getSingletonInstance(); 
    19581958 
    19591959            $sqls = file_get_contents($sqlFilePath); 
     
    19811981        if (!SC_Utils_Ex::sfIsInt($product_id)) return false; 
    19821982 
    1983         $objQuery  = new SC_Query(); 
     1983        $objQuery =& SC_Query::getSingletonInstance(); 
    19841984        $where = 'product_id = ? AND (classcategory_id1 <> 0 OR classcategory_id2 <> 0)'; 
    19851985        $count = $objQuery->count('dtb_products_class', $where, array($product_id)); 
     
    19941994     */ 
    19951995    function chkCartDown($objCartSess) { 
    1996         $objQuery = new SC_Query(); 
     1996        $objQuery =& SC_Query::getSingletonInstance(); 
    19971997        $down = false; 
    19981998        $nodown = false; 
Note: See TracChangeset for help on using the changeset viewer.