Exemplo n.º 1
0
 /**
  * 解析SQL语句
  * @access public
  * @param string $sql  SQL指令
  * @param boolean $parse  是否需要解析SQL
  * @return string
  */
 protected function parseSql($sql, $parse)
 {
     // 分析表达式
     if (true === $parse) {
         $options = $this->_parseOptions();
         $sql = $this->db->parseSql($sql, $options);
     } elseif (is_array($parse)) {
         // SQL预处理
         $parse = array_map(array($this->db, 'escapeString'), $parse);
         $sql = vsprintf($sql, $parse);
     } else {
         $sql = strtr($sql, array('__TABLE__' => $this->getTableName(), '__PREFIX__' => $this->tablePrefix));
         $prefix = $this->tablePrefix;
         $sql = preg_replace_callback("/__([A-Z0-9_-]+)__/sU", function ($match) use($prefix) {
             return $prefix . strtolower($match[1]);
         }, $sql);
     }
     $this->db->setModel($this->name);
     return $sql;
 }