Ejemplo n.º 1
0
 public function update($data, $filter, $mustUpdate = null)
 {
     if (count((array) $data) == 0) {
         return true;
     }
     $UpdateValues = array();
     foreach ($this->_columns() as $k => $v) {
         if (!empty($mustUpdate)) {
             if (!array_key_exists($k, $mustUpdate)) {
                 continue;
             } else {
                 unset($mustUpdate[$k]);
             }
         }
         if (array_key_exists($k, $data)) {
             $UpdateValues[] = '`' . $k . '`= ' . base_db_tools::quotevalue($this->db, $data[$k], $v['type']);
         }
         if ($data[$k] !== false) {
             if ($v['type'] == 'last_modify') {
                 $UpdateValues[] = '`' . $k . '` = ' . time() . ' ';
                 //     $data[$k] = time();
             } elseif ($v['depend_col']) {
                 $dependColVal = explode(':', $v['depend_col']);
                 if ($data[$dependColVal[0]] == $dependColVal[1]) {
                     switch ($dependColVal[2]) {
                         case 'now':
                             $UpdateValues[] = '`' . $k . '` = ' . time() . ' ';
                             //                                $data[$k] = time();
                             break;
                     }
                 }
             }
         }
     }
     if (!empty($mustUpdate)) {
         foreach ($mustUpdate as $mpk => $mpv) {
             $UpdateValues[] = '`' . $mpk . '`= NULL';
         }
     }
     if (count($UpdateValues) > 0) {
         $sql = 'update ' . $this->table_name(1) . ' set ' . implode(',', $UpdateValues) . ' where ' . base_db_tools::filter2sql($filter);
         if ($this->db->exec($sql)) {
             if ($rs = $this->db->affect_row()) {
                 return $rs;
             } else {
                 return true;
             }
         } else {
             return false;
         }
     }
 }
Ejemplo n.º 2
0
 public function update($data, $filter = array(), $mustUpdate = null)
 {
     if (count((array) $data) == 0) {
         return true;
     }
     $UpdateValues = array();
     foreach ($this->_columns() as $k => $v) {
         if (!empty($mustUpdate)) {
             if (!array_key_exists($k, $mustUpdate)) {
                 continue;
             } else {
                 unset($mustUpdate[$k]);
             }
         }
         //如果是必填,那么参数如果是空则使用默认
         if ($v['required'] && array_key_exists($k, $data) && ($data[$k] === '' || is_null($data[$k]))) {
             unset($data[$k]);
         }
         if (array_key_exists($k, $data)) {
             $UpdateValues[] = '`' . $k . '`= ' . base_db_tools::quotevalue($this->db, $data[$k], $v['type']);
         }
         if ($data[$k] !== false) {
             if ($v['type'] == 'last_modify') {
                 $UpdateValues[] = '`' . $k . '` = ' . time() . ' ';
             } elseif (isset($v['depend_col']) && !empty($v['depend_col'])) {
                 $dependColVal = explode(':', $v['depend_col']);
                 if ($data[$dependColVal[0]] == $dependColVal[1]) {
                     switch ($dependColVal[2]) {
                         case 'now':
                             $UpdateValues[] = '`' . $k . '` = ' . time() . ' ';
                             break;
                     }
                 }
             }
         }
     }
     if (!empty($mustUpdate)) {
         foreach ($mustUpdate as $mpk => $mpv) {
             $UpdateValues[] = '`' . $mpk . '`= NULL';
         }
     }
     $where_sql = is_array($filter) ? base_db_tools::filter2sql($filter) : $filter;
     $sql = 'update `' . $this->table_name(1) . '` set ' . implode(',', $UpdateValues) . ' where ' . $where_sql;
     if (!stripos($where_sql, 'AND')) {
         logger::warning('全表更新操作被拦截!SQL:' . $sql);
         return false;
     }
     if (count($UpdateValues) > 0) {
         return $this->db->exec($sql, $this->skipModifiedMark);
     }
 }