[Svn-src-all:2778] [version-2_12-dev 21677] #1719 (SC_Query#insert SQL文のみの登録ができない)

Seasoft admin @ mail.ec-cube.net
2012年 3月 26日 (月) 14:37:03 JST


Subversion committed to /home/svn/open 21677
http://svn.ec-cube.net/open_trac/changeset/21677
┌────────────────────────────┐
│更新者 :  Seasoft                                      │
│更新日時:  2012-03-26 14:37:03 +0900 (月, 26  3月 2012)│
└────────────────────────────┘

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

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_12-dev/data/class/SC_Query.php

変更: branches/version-2_12-dev/data/class/SC_Query.php
===================================================================
--- branches/version-2_12-dev/data/class/SC_Query.php	2012-03-26 05:30:52 UTC (rev 21676)
+++ branches/version-2_12-dev/data/class/SC_Query.php	2012-03-26 05:37:03 UTC (rev 21677)
@@ -469,21 +469,20 @@
      * INSERT文を実行する.
      *
      * @param string $table テーブル名
-     * @param array $sqlval array('カラム名' => '値', ...)の連想配列
+     * @param array $arrVal array('カラム名' => '値', ...)の連想配列
      * @param array $arrSql array('カラム名' => 'SQL文', ...)の連想配列
      * @param array $arrSqlVal SQL文の中で使用するプレースホルダ配列
      * @param string $from FROM 句・WHERE 句
      * @param string $arrFromVal FROM 句・WHERE 句で使用するプレースホルダ配列
-     * @return integer|DB_Error 挿入件数またはDB_Error
+     * @return integer|DB_Error|boolean 挿入件数またはエラー(DB_Error, false)
      */
-    function insert($table, $sqlval, $arrSql = array(), $arrSqlVal = array(), $from = '', $arrFromVal = array()) {
+    function insert($table, $arrVal, $arrSql = array(), $arrSqlVal = array(), $from = '', $arrFromVal = array()) {
         $strcol = '';
         $strval = '';
         $find = false;
-        $arrVal = array();
+        $arrValForQuery = array();
 
-        if(count($sqlval) <= 0) return false;
-        foreach ($sqlval as $key => $val) {
+        foreach ($arrVal as $key => $val) {
             $strcol .= $key . ',';
             if (strcasecmp('Now()', $val) === 0) {
                 $strval .= 'Now(),';
@@ -491,7 +490,7 @@
                 $strval .= 'CURRENT_TIMESTAMP,';
             } else {
                 $strval .= '?,';
-                $arrVal[] = $val;
+                $arrValForQuery[] = $val;
             }
             $find = true;
         }
@@ -499,9 +498,10 @@
         foreach ($arrSql as $key => $val) {
             $strcol .= $key . ',';
             $strval .= $val . ',';
+            $find = true;
         }
 
-        $arrVal = array_merge($arrVal, $arrSqlVal);
+        $arrValForQuery = array_merge($arrValForQuery, $arrSqlVal);
 
         if (!$find) {
             return false;
@@ -513,11 +513,11 @@
 
         if (strlen($from) >= 1) {
             $sqlin .= ' ' . $from;
-            $arrVal = array_merge($arrVal, $arrFromVal);
+            $arrValForQuery = array_merge($arrValForQuery, $arrFromVal);
         }
 
         // INSERT文の実行
-        $ret = $this->query($sqlin, $arrVal, false, null, MDB2_PREPARE_MANIP);
+        $ret = $this->query($sqlin, $arrValForQuery, false, null, MDB2_PREPARE_MANIP);
 
         return $ret;
     }
@@ -526,26 +526,26 @@
      * UPDATE文を実行する.
      *
      * @param string $table テーブル名
-     * @param array $sqlval array('カラム名' => '値', ...)の連想配列
+     * @param array $arrVal array('カラム名' => '値', ...)の連想配列
      * @param string $where WHERE句
      * @param array $arrWhereVal WHERE句用のプレースホルダ配列 (従来は追加カラム用も兼ねていた)
      * @param array $arrRawSql 追加カラム
      * @param array $arrRawSqlVal 追加カラム用のプレースホルダ配列
      * @return
      */
-    function update($table, $sqlval, $where = '', $arrWhereVal = array(), $arrRawSql = array(), $arrRawSqlVal = array()) {
+    function update($table, $arrVal, $where = '', $arrWhereVal = array(), $arrRawSql = array(), $arrRawSqlVal = array()) {
         $arrCol = array();
-        $arrVal = array();
+        $arrValForQuery = array();
         $find = false;
 
-        foreach ($sqlval as $key => $val) {
+        foreach ($arrVal as $key => $val) {
             if (strcasecmp('Now()', $val) === 0) {
                 $arrCol[] = $key . '= Now()';
             } else if (strcasecmp('CURRENT_TIMESTAMP', $val) === 0) {
                 $arrCol[] = $key . '= CURRENT_TIMESTAMP';
             } else {
                 $arrCol[] = $key . '= ?';
-                $arrVal[] = $val;
+                $arrValForQuery[] = $val;
             }
             $find = true;
         }
@@ -556,7 +556,7 @@
             }
         }
 
-        $arrVal = array_merge($arrVal, $arrRawSqlVal);
+        $arrValForQuery = array_merge($arrValForQuery, $arrRawSqlVal);
 
         if (empty($arrCol)) {
             return false;
@@ -567,7 +567,7 @@
 
         if (is_array($arrWhereVal)) { // 旧版との互換用
             // プレースホルダー用に配列を追加
-            $arrVal = array_merge($arrVal, $arrWhereVal);
+            $arrValForQuery = array_merge($arrValForQuery, $arrWhereVal);
         }
 
         $sqlup = "UPDATE $table SET $strcol";
@@ -576,7 +576,7 @@
         }
 
         // UPDATE文の実行
-        return $this->query($sqlup, $arrVal, false, null, MDB2_PREPARE_MANIP);
+        return $this->query($sqlup, $arrValForQuery, false, null, MDB2_PREPARE_MANIP);
     }
 
     /**




Svn-src-all メーリングリストの案内