Ignore:
Timestamp:
2011/09/25 13:15:51 (13 years ago)
Author:
Seasoft
Message:

#1484 (SC_Product#lists の第2引数($arrVal)が実質的に無効)
#1449 (不要な関数・処理の整理)
#1421 (Fix typo.)
#1463 (コーディング規則に従っていない)

File:
1 edited

Legend:

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

    r21254 r21256  
    3535 
    3636    var $instance; 
    37     var $option; 
    38     var $where; 
     37    var $option = ''; 
     38    var $where = ''; 
     39    var $arrWhereVal = array(); 
    3940    var $conn; 
    40     var $groupby; 
    41     var $order; 
     41    var $groupby = ''; 
     42    var $order = ''; 
    4243    var $force_run; 
    4344 
     
    8283        $this->dbFactory = SC_DB_DBFactory_Ex::getInstance(); 
    8384        $this->force_run = $force_run; 
    84         $this->where = ""; 
    85         $this->order = ""; 
    86         $this->groupby = ""; 
    87         $this->option = ""; 
    8885    } 
    8986 
     
    10198            $GLOBALS['_SC_Query_instance'] =& new SC_Query_Ex($dsn, $force_run, $new); 
    10299        } 
    103         $GLOBALS['_SC_Query_instance']->where = ""; 
    104         $GLOBALS['_SC_Query_instance']->order = ""; 
    105         $GLOBALS['_SC_Query_instance']->groupby = ""; 
    106         $GLOBALS['_SC_Query_instance']->option = ""; 
     100        $GLOBALS['_SC_Query_instance']->where = ''; 
     101        $GLOBALS['_SC_Query_instance']->arrWhereVal = array(); 
     102        $GLOBALS['_SC_Query_instance']->order = ''; 
     103        $GLOBALS['_SC_Query_instance']->groupby = ''; 
     104        $GLOBALS['_SC_Query_instance']->option = ''; 
    107105        return $GLOBALS['_SC_Query_instance']; 
    108106    } 
     
    126124     * @param string $table テーブル名 
    127125     * @param string $where where句 
    128      * @param array $arrval プレースホルダ 
     126     * @param array $arrWhereVal プレースホルダ 
    129127     * @return integer 件数 
    130128     */ 
    131     function count($table, $where = "", $arrval = array()) { 
     129    function count($table, $where = "", $arrWhereVal = array()) { 
    132130        if(strlen($where) <= 0) { 
    133131            $sqlse = "SELECT COUNT(*) FROM $table"; 
     
    136134        } 
    137135        $sqlse = $this->dbFactory->sfChangeMySQL($sqlse); 
    138         return $this->getOne($sqlse, $arrval); 
     136        return $this->getOne($sqlse, $arrWhereVal); 
    139137    } 
    140138 
     
    145143     * @param string $table テーブル名 
    146144     * @param string $where WHERE句 
    147      * @param array $arrval プレースホルダ 
     145     * @param array $arrWhereVal プレースホルダ 
    148146     * @param integer $fetchmode 使用するフェッチモード。デフォルトは MDB2_FETCHMODE_ASSOC。 
    149147     * @return array|null 
    150148     */ 
    151     function select($col, $table, $where = "", $arrval = array(), $fetchmode = MDB2_FETCHMODE_ASSOC) { 
    152         $sqlse = $this->getSql($col, $table, $where); 
    153         return $this->getAll($sqlse, $arrval, $fetchmode); 
     149    function select($col, $table, $where = "", $arrWhereVal = array(), $fetchmode = MDB2_FETCHMODE_ASSOC) { 
     150        $sqlse = $this->getSql($col, $table, $where, $arrWhereVal); 
     151        return $this->getAll($sqlse, $arrWhereVal, $fetchmode); 
    154152    } 
    155153 
     
    279277     * 構築した SELECT 文を取得する. 
    280278     * 
     279     * クラス変数から WHERE 句を組み立てる場合、$arrWhereVal を経由してプレースホルダもクラス変数のもので上書きする。 
    281280     * @param string $col SELECT 文に含めるカラム名 
    282281     * @param string $table SELECT 文に含めるテーブル名 
    283282     * @param string $where SELECT 文に含める WHERE 句 
     283     * @param mixed $arrWhereVal プレースホルダ(参照) 
    284284     * @return string 構築済みの SELECT 文 
    285285     */ 
    286     function getSql($col, $table, $where = '') { 
     286    function getSql($col, $table, $where = '', &$arrWhereVal = null) { 
    287287        $sqlse = "SELECT $col FROM $table"; 
    288288 
     
    292292        } elseif (strlen($this->where) >= 1) { 
    293293            $sqlse .= " WHERE " . $this->where; 
     294            if (empty($arrWhereVal)) { 
     295                $arrWhereVal = $this->arrWhereVal; 
     296            } 
    294297        } 
    295298 
     
    388391     * この関数で設定した値は SC_Query::getSql() で使用されます. 
    389392     * 
    390      * @param string $str WHERE 句に付与する文字列 
     393     * @param string $where WHERE 句に付与する文字列 
     394     * @param mixed $arrWhereVal プレースホルダ 
    391395     * @return SC_Query 自分自身のインスタンス 
    392396     */ 
    393     function setWhere($str) { 
    394         $this->where = $str; 
     397    function setWhere($where = '', $arrWhereVal = array()) { 
     398        $this->where = $where; 
     399        $this->arrWhereVal = $arrWhereVal; 
    395400        return $this; 
    396401    } 
     
    489494     * @param array $sqlval array('カラム名' => '値',...)の連想配列 
    490495     * @param string $where WHERE句 
    491      * @param array $arrValIn WHERE句用のプレースホルダ配列 (従来は追加カラム用も兼ねていた) 
     496     * @param array $arrWhereVal WHERE句用のプレースホルダ配列 (従来は追加カラム用も兼ねていた) 
    492497     * @param array $arrRawSql 追加カラム 
    493498     * @param array $arrRawSqlVal 追加カラム用のプレースホルダ配列 
    494499     * @return 
    495500     */ 
    496     function update($table, $sqlval, $where = "", $arrValIn = array(), $arrRawSql = array(), $arrRawSqlVal = array()) { 
     501    function update($table, $sqlval, $where = "", $arrWhereVal = array(), $arrRawSql = array(), $arrRawSqlVal = array()) { 
    497502        $arrCol = array(); 
    498503        $arrVal = array(); 
     
    528533        $strcol = implode(', ', $arrCol); 
    529534 
    530         if (is_array($arrValIn)) { // 旧版との互換用 
     535        if (is_array($arrWhereVal)) { // 旧版との互換用 
    531536            // プレースホルダー用に配列を追加 
    532             $arrVal = array_merge($arrVal, $arrValIn); 
     537            $arrVal = array_merge($arrVal, $arrWhereVal); 
    533538        } 
    534539 
     
    548553     * @param string $col カラム名 
    549554     * @param string $where 付与する WHERE 句 
    550      * @param array $arrval レースホルダに挿入する値 
     555     * @param array $arrval レースホルダに挿入する値 
    551556     * @return integer MAX文の実行結果 
    552557     */ 
     
    562567     * @param string $col カラム名 
    563568     * @param string $where 付与する WHERE 句 
    564      * @param array $arrval レースホルダに挿入する値 
     569     * @param array $arrval レースホルダに挿入する値 
    565570     * @return integer MIN文の実行結果 
    566571     */ 
     
    576581     * @param string $col カラム名 
    577582     * @param string $where 付与する WHERE 句 
    578      * @param array $arrval ブレースホルダに挿入する値 
     583     * @param array $arrWhereVal プレースホルダに挿入する値 
    579584     * @return mixed SQL の実行結果 
    580585     */ 
    581     function get($col, $table, $where = "", $arrval = array()) { 
    582         $sqlse = $this->getSql($col, $table, $where); 
     586    function get($col, $table, $where = "", $arrWhereVal = array()) { 
     587        $sqlse = $this->getSql($col, $table, $where, $arrWhereVal); 
    583588        // SQL文の実行 
    584         $ret = $this->getOne($sqlse, $arrval); 
     589        $ret = $this->getOne($sqlse, $arrWhereVal); 
    585590        return $ret; 
    586591    } 
     
    590595     * 
    591596     * @param string $sql 実行する SQL 
    592      * @param array $arrval レースホルダに挿入する値 
     597     * @param array $arrval レースホルダに挿入する値 
    593598     * @return mixed SQL の実行結果 
    594599     */ 
     
    616621     * @param string $col カラム名 
    617622     * @param string $where WHERE句 
    618      * @param array $arrVal プレースホルダ配列 
     623     * @param array $arrWhereVal プレースホルダ配列 
    619624     * @param integer $fetchmode 使用するフェッチモード。デフォルトは MDB2_FETCHMODE_ASSOC。 
    620625     * @return array array('カラム名' => '値', ...)の連想配列 
    621626     */ 
    622     function getRow($col, $table, $where = "", $arrVal = array(), $fetchmode = MDB2_FETCHMODE_ASSOC) { 
    623  
    624         $sql = $this->getSql($col, $table, $where); 
     627    function getRow($col, $table, $where = "", $arrWhereVal = array(), $fetchmode = MDB2_FETCHMODE_ASSOC) { 
     628 
     629        $sql = $this->getSql($col, $table, $where, $arrWhereVal); 
    625630        $sql = $this->dbFactory->sfChangeMySQL($sql); 
    626631 
     
    630635        } 
    631636 
    632         $affected =& $this->execute($sth, $arrVal); 
     637        $affected =& $this->execute($sth, $arrWhereVal); 
    633638        if (PEAR::isError($affected) && $this->force_run) { 
    634639            return; 
     
    639644 
    640645    /** 
    641      * SELECT 文の実行結果を 1のみ取得する. 
     646     * SELECT 文の実行結果を 1のみ取得する. 
    642647     * 
    643648     * @param string $table テーブル名 
    644649     * @param string $col カラム名 
    645650     * @param string $where 付与する WHERE 句 
    646      * @param array $arrval ブレースホルダに挿入する値 
     651     * @param array $arrWhereVal プレースホルダに挿入する値 
    647652     * @return array SQL の実行結果の配列 
    648653     */ 
    649     function getCol($col, $table, $where = "", $arrval = array()) { 
    650         $sql = $this->getSql($col, $table, $where); 
     654    function getCol($col, $table, $where = "", $arrWhereVal = array()) { 
     655        $sql = $this->getSql($col, $table, $where, $arrWhereVal); 
    651656        $sql = $this->dbFactory->sfChangeMySQL($sql); 
    652657 
     
    656661        } 
    657662 
    658         $affected =& $this->execute($sth, $arrval); 
     663        $affected =& $this->execute($sth, $arrWhereVal); 
    659664        if (PEAR::isError($affected) && $this->force_run) { 
    660665            return; 
     
    722727     * 
    723728     * @param string $n 実行する SQL 文 
    724      * @param array $arr レースホルダに挿入する値 
     729     * @param array $arr レースホルダに挿入する値 
    725730     * @param boolean $ignore_err MDB2切替で無効化されている (エラーが発生しても処理を続行する場合 true) 
    726731     * @param mixed $types プレースホルダの型指定 デフォルトnull = string 
     
    830835     * 
    831836     * TODO MDB2 に対応するための暫定的な措置. 
    832      *      レースホルダが使用できない実装があるため. 
     837     *      レースホルダが使用できない実装があるため. 
    833838     *      本来であれば, MDB2::prepare() を適切に使用するべき 
    834839     * 
     
    845850     * 
    846851     * @param string $table テーブル名 
    847      * @param array レースホルダの連想配列 
     852     * @param array レースホルダの連想配列 
    848853     * @return array テーブルに存在する列のみ抽出した連想配列 
    849854     */ 
     
    885890     * @access private 
    886891     * @param MDB2_Statement_Common プリペアドステートメントインスタンス 
    887      * @param array $arrVal レースホルダに挿入する配列 
     892     * @param array $arrVal レースホルダに挿入する配列 
    888893     * @return MDB2_Result 結果セットのインスタンス 
    889894     */ 
    890895    function execute(&$sth, $arrVal = array()) { 
    891896        $timeStart = SC_Utils_Ex::sfMicrotimeFloat(); 
    892         $affected =& $sth->execute($arrVal); 
     897        $affected =& $sth->execute((array)$arrVal); 
    893898 
    894899        // 一定以上時間かかったSQLの場合、ログ出力する。 
     
    947952     * 
    948953     * @param string $n 実行する SQL 文 
    949      * @param array $arr レースホルダに挿入する値 
     954     * @param array $arr レースホルダに挿入する値 
    950955     * @param boolean エラーが発生しても処理を続行する場合 true 
    951956     * @param mixed $types プレースホルダの型指定 デフォルトnull = string 
Note: See TracChangeset for help on using the changeset viewer.