public function select($options = array())
{
if (isset($options['page'])) {
// 根据页数计算limit
list($page, $listRows) = explode(',', $options['page']);
$listRows = $listRows ? $listRows : (isset($options['limit']) && is_numeric($options['limit']) ? $options['limit'] : 20);
$offset = $listRows * ((int) $page - 1);
$options['limit'] = $offset . ',' . $listRows;
}
$sql = str_replace(array('%TABLE%', '%DISTINCT%', '%FIELDS%', '%JOIN%', '%WHERE%', '%GROUP%', '%HAVING%', '%ORDER%', '%LIMIT%'), array($this->parseTable($options['table']), $this->parseDistinct(isset($options['distinct']) ? $options['distinct'] : false), $this->parseField(isset($options['field']) ? $options['field'] : '*'), $this->parseJoin(isset($options['join']) ? $options['join'] : ''), $this->parseWhere(isset($options['where']) ? $options['where'] : ''), $this->parseGroup(isset($options['group']) ? $options['group'] : ''), $this->parseHaving(isset($options['having']) ? $options['having'] : ''), $this->parseOrder(isset($options['order']) ? $options['order'] : ''), $this->parseLimit(isset($options['limit']) ? $options['limit'] : '')), $this->selectSql);
$sql .= $this->parseLock(isset($options['lock']) ? $options['lock'] : false);
return $this->query($sql);
}