/** * 一次取出一个对象 * * @param mixed $query 查询对象 * @param array $filter 行过滤器函数,将查询的每一行作为第一个参数传入指定的过滤器中 * @return array */ public function fetchObject($query, array $filter = NULL) { $resource = $this->query($query, self::READ); /** 取出过滤器 */ if ($filter) { list($object, $method) = $filter; } return ($rows = $this->_adapter->fetchObject($resource)) ? $filter ? $object->{$method}($rows) : $rows : new stdClass(); }
/** * 构造最终查询语句 * * @return string */ public function __toString() { switch ($this->_sqlPreBuild['action']) { case Typecho_Db::SELECT: return $this->_adapter->parseSelect($this->_sqlPreBuild); case Typecho_Db::INSERT: return 'INSERT INTO ' . $this->_sqlPreBuild['table'] . '(' . implode(' , ', array_keys($this->_sqlPreBuild['rows'])) . ')' . ' VALUES ' . '(' . implode(' , ', array_values($this->_sqlPreBuild['rows'])) . ')' . $this->_sqlPreBuild['limit']; case Typecho_Db::DELETE: return 'DELETE FROM ' . $this->_sqlPreBuild['table'] . $this->_sqlPreBuild['where']; case Typecho_Db::UPDATE: $columns = array(); if (isset($this->_sqlPreBuild['rows'])) { foreach ($this->_sqlPreBuild['rows'] as $key => $val) { $columns[] = "{$key} = {$val}"; } } return 'UPDATE ' . $this->_sqlPreBuild['table'] . ' SET ' . implode(' , ', $columns) . $this->_sqlPreBuild['where']; default: return NULL; } }