public function select($columns, $table, $where = '', $replacements = '', $order = '', $limit = '', $cache = false, $calc_rows = false, $highlight = false) {

        // if $columns is not a string, split by comma and trim whitespace
        if (!is_array($columns)) $columns = array_map('trim', explode(',', $columns));

        // iterate over the given columns
        foreach ($columns as $key => $value)

            // and escape everyone except the * character
            if (trim($value) != '*') $columns[$key] = $this->_escape($value);

        // run the query
        return $this->query('

            SELECT
                ' . implode(', ', $columns) . '
            FROM
                ' . $this->_escape($table) .

            ($where != '' ? ' WHERE ' . $where : '') .

            ($order != '' ? ' ORDER BY ' . $order : '') .

            ($limit != '' ? ' LIMIT ' . $limit : '') . '

        ', $replacements, $cache, $calc_rows, $highlight);

    }