Ignore:
Timestamp:
2012/03/26 14:37:03 (12 years ago)
Author:
Seasoft
Message:

#1719 (SC_Query#insert SQL文のみの登録ができない)
#1613 (typo修正・ソース整形・ソースコメントの改善)

File:
1 edited

Legend:

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

    r21651 r21677  
    470470     * 
    471471     * @param string $table テーブル名 
    472      * @param array $sqlval array('カラム名' => '値', ...)の連想配列 
     472     * @param array $arrVal array('カラム名' => '値', ...)の連想配列 
    473473     * @param array $arrSql array('カラム名' => 'SQL文', ...)の連想配列 
    474474     * @param array $arrSqlVal SQL文の中で使用するプレースホルダ配列 
    475475     * @param string $from FROM 句・WHERE 句 
    476476     * @param string $arrFromVal FROM 句・WHERE 句で使用するプレースホルダ配列 
    477      * @return integer|DB_Error 挿入件数またはDB_Error 
    478      */ 
    479     function insert($table, $sqlval, $arrSql = array(), $arrSqlVal = array(), $from = '', $arrFromVal = array()) { 
     477     * @return integer|DB_Error|boolean 挿入件数またはエラー(DB_Error, false) 
     478     */ 
     479    function insert($table, $arrVal, $arrSql = array(), $arrSqlVal = array(), $from = '', $arrFromVal = array()) { 
    480480        $strcol = ''; 
    481481        $strval = ''; 
    482482        $find = false; 
    483         $arrVal = array(); 
    484  
    485         if(count($sqlval) <= 0) return false; 
    486         foreach ($sqlval as $key => $val) { 
     483        $arrValForQuery = array(); 
     484 
     485        foreach ($arrVal as $key => $val) { 
    487486            $strcol .= $key . ','; 
    488487            if (strcasecmp('Now()', $val) === 0) { 
     
    492491            } else { 
    493492                $strval .= '?,'; 
    494                 $arrVal[] = $val; 
     493                $arrValForQuery[] = $val; 
    495494            } 
    496495            $find = true; 
     
    500499            $strcol .= $key . ','; 
    501500            $strval .= $val . ','; 
    502         } 
    503  
    504         $arrVal = array_merge($arrVal, $arrSqlVal); 
     501            $find = true; 
     502        } 
     503 
     504        $arrValForQuery = array_merge($arrValForQuery, $arrSqlVal); 
    505505 
    506506        if (!$find) { 
     
    514514        if (strlen($from) >= 1) { 
    515515            $sqlin .= ' ' . $from; 
    516             $arrVal = array_merge($arrVal, $arrFromVal); 
     516            $arrValForQuery = array_merge($arrValForQuery, $arrFromVal); 
    517517        } 
    518518 
    519519        // INSERT文の実行 
    520         $ret = $this->query($sqlin, $arrVal, false, null, MDB2_PREPARE_MANIP); 
     520        $ret = $this->query($sqlin, $arrValForQuery, false, null, MDB2_PREPARE_MANIP); 
    521521 
    522522        return $ret; 
     
    527527     * 
    528528     * @param string $table テーブル名 
    529      * @param array $sqlval array('カラム名' => '値', ...)の連想配列 
     529     * @param array $arrVal array('カラム名' => '値', ...)の連想配列 
    530530     * @param string $where WHERE句 
    531531     * @param array $arrWhereVal WHERE句用のプレースホルダ配列 (従来は追加カラム用も兼ねていた) 
     
    534534     * @return 
    535535     */ 
    536     function update($table, $sqlval, $where = '', $arrWhereVal = array(), $arrRawSql = array(), $arrRawSqlVal = array()) { 
     536    function update($table, $arrVal, $where = '', $arrWhereVal = array(), $arrRawSql = array(), $arrRawSqlVal = array()) { 
    537537        $arrCol = array(); 
    538         $arrVal = array(); 
     538        $arrValForQuery = array(); 
    539539        $find = false; 
    540540 
    541         foreach ($sqlval as $key => $val) { 
     541        foreach ($arrVal as $key => $val) { 
    542542            if (strcasecmp('Now()', $val) === 0) { 
    543543                $arrCol[] = $key . '= Now()'; 
     
    546546            } else { 
    547547                $arrCol[] = $key . '= ?'; 
    548                 $arrVal[] = $val; 
     548                $arrValForQuery[] = $val; 
    549549            } 
    550550            $find = true; 
     
    557557        } 
    558558 
    559         $arrVal = array_merge($arrVal, $arrRawSqlVal); 
     559        $arrValForQuery = array_merge($arrValForQuery, $arrRawSqlVal); 
    560560 
    561561        if (empty($arrCol)) { 
     
    568568        if (is_array($arrWhereVal)) { // 旧版との互換用 
    569569            // プレースホルダー用に配列を追加 
    570             $arrVal = array_merge($arrVal, $arrWhereVal); 
     570            $arrValForQuery = array_merge($arrValForQuery, $arrWhereVal); 
    571571        } 
    572572 
     
    577577 
    578578        // UPDATE文の実行 
    579         return $this->query($sqlup, $arrVal, false, null, MDB2_PREPARE_MANIP); 
     579        return $this->query($sqlup, $arrValForQuery, false, null, MDB2_PREPARE_MANIP); 
    580580    } 
    581581 
Note: See TracChangeset for help on using the changeset viewer.