/** * Updated a record based on an arbitrary WHERE clause. */ public function update_by($where, $data, $skip_validation = false) { $method = __FUNCTION__; $this->flush_caches(); ci()->event->trigger('database.' . $this->object . '.before.update', $method, $data, $where, $skip_validation); /* rule override is handled in the parent class */ if ($skip_validation !== true) { $rule = $skip_validation === false ? 'insert' : $skip_validation; /* return false on failure data validated & filtered */ $data = $this->validate($data, $rule); } if ($data !== false) { /* passed by ref */ parent::protect_attributes($data); $result = $this->_database->set($data)->where($where)->update($this->table); $this->log_last_query(); ci()->event->trigger('database.' . $this->object . '.after.update', $method, $data, $result); return $result; } return false; }