Ignore:
Timestamp:
2009/06/12 14:45:35 (17 years ago)
Author:
Seasoft
Message:

・SC_DbConn#getRow の改訂
・SC_Query#getRow の改訂
・SC_Query#update の改訂
・ソース整形

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/comu-ver2/data/class/SC_Query.php

    r18091 r18098  
    277277     * @param array $sqlval array('カラム名' => '値',...)の連想配列 
    278278     * @param string $where WHERE句 
    279      * @param array $arradd $addcol用のプレースホルダ配列 
    280      * @param string $addcol 追加カラム 
     279     * @param array $arrValIn $where,$arrRawSql用のプレースホルダ配列 
     280     * @param string $arrRawSql 追加カラム 
    281281     * @return 
    282282     */ 
    283     function update($table, $sqlval, $where = "", $arradd = "", $addcol = "") { 
    284         $strcol = ''; 
     283    function update($table, $sqlval, $where = "", $arrValIn = array(), $arrRawSql = array()) { 
     284        $arrCol = array(); 
     285        $arrVal = array(); 
    285286        $find = false; 
    286287        foreach ($sqlval as $key => $val) { 
    287             if(eregi("^Now\(\)$", $val)) { 
    288                 $strcol .= $key . '= Now(),'; 
     288            if (eregi("^Now\(\)$", $val)) { 
     289                $arrCol[] = $key . '= Now()'; 
    289290            } else { 
    290                 $strcol .= $key . '= ?,'; 
    291                 $arrval[] = $val; 
     291                $arrCol[] = $key . '= ?'; 
     292                $arrVal[] = $val; 
    292293            } 
    293294            $find = true; 
    294295        } 
    295         if(!$find) { 
     296 
     297        if ($arrRawSql != "") { 
     298            foreach($arrRawSql as $key => $val) { 
     299                $arrCol[] = "$key = $val"; 
     300            } 
     301        } 
     302 
     303        if (empty($arrCol)) { 
    296304            return false; 
    297305        } 
    298306 
    299         if($addcol != "") { 
    300             foreach($addcol as $key => $val) { 
    301                 $strcol .= "$key = $val,"; 
    302             } 
    303         } 
    304  
    305307        // 文末の","を削除 
    306         $strcol = ereg_replace(",$","",$strcol); 
    307  
    308         if($where != "") { 
    309             $sqlup = "UPDATE $table SET $strcol WHERE $where"; 
    310         } else { 
    311             $sqlup = "UPDATE $table SET $strcol"; 
    312         } 
    313  
    314         if(is_array($arradd)) { 
     308        $strcol = implode(', ', $arrCol); 
     309 
     310        if (is_array($arrValIn)) { // 旧版との互換用 
    315311            // プレースホルダー用に配列を追加 
    316             foreach($arradd as $val) { 
    317                 $arrval[] = $val; 
    318             } 
     312            $arrVal = array_merge($arrVal, $arrValIn); 
     313        } 
     314 
     315        $sqlup = "UPDATE $table SET $strcol"; 
     316        if (strlen($where) >= 1) { 
     317            $sqlup .= " WHERE $where"; 
    319318        } 
    320319 
    321320        // UPDATE文の実行 
    322         $ret = $this->conn->query($sqlup, $arrval); 
    323         return $ret; 
     321        return $this->conn->query($sqlup, $arrVal); 
    324322    } 
    325323 
     
    367365    } 
    368366 
    369     // 一行を取得 
    370     function getrow($table, $col, $where = "", $arrval = array()) { 
    371         if(strlen($where) <= 0) { 
    372             $sqlse = "SELECT $col FROM $table"; 
    373         } else { 
    374             $sqlse = "SELECT $col FROM $table WHERE $where"; 
     367    /** 
     368     * 一行をカラム名をキーとした連想配列として取得 
     369     * 
     370     * @param string $table テーブル名 
     371     * @param string $col カラム名 
     372     * @param string $where WHERE句 
     373     * @param array $arrVal プレースホルダ配列 
     374     * @param integer $fetchmode 使用するフェッチモード。デフォルトは DB_FETCHMODE_ASSOC。 
     375     * @return array array('カラム名' => '値', ...)の連想配列 
     376     */ 
     377    function getRow($table, $col, $where = "", $arrVal = array(), $fetchmode = DB_FETCHMODE_ASSOC) { 
     378        $sqlse = "SELECT $col FROM $table"; 
     379         
     380        if (strlen($where) >= 1) { 
     381            $sqlse .= " WHERE $where"; 
    375382        } 
    376383        // SQL文の実行 
    377         $ret = $this->conn->getRow($sqlse, $arrval); 
    378  
    379         return $ret; 
     384        return $this->conn->getRow($sqlse, $arrVal ,$fetchmode); 
    380385    } 
    381386 
Note: See TracChangeset for help on using the changeset viewer.