private function _sqlUpdate($args) { //validations if (!is_array($args['data'])) { parent::exception("Invalid data argument. Must be an array!", __METHOD__); } $data = array(); foreach ($this->cols() as $column) { if (array_key_exists($column, $args['data'])) { $data[$column] = $args['data'][$column]; } } if (empty($data)) { parent::exception("Invalid update data!", __METHOD__); } //create sql query $table = $this->quote($args['table']); $sql = "UPDATE {$table}"; $params = array(); if (isset($args['join'])) { foreach ($args['join'] as $join) { $sql .= ' ' . $join['sql']; $params = $this->_addParameters($params, $join['params']); } } foreach (array_keys($data) as $col) { $columns[] = $this->quote($col) . ' = ?'; } $columns = implode(', ', $columns); $sql .= " SET {$columns}"; $params = $this->_addParameters($params, array_values($data)); // Process WHERE conditions if (isset($args['where']['sql'])) { $sql .= " WHERE {$args['where']['sql']}"; $params = $this->_addParameters($params, $args['where']['params']); } return array($sql, $params); }