chengkun
2025-04-24 5d55579fd424e024c52e62265b72e24c38a45004
app/public/action.class.php
@@ -1,4 +1,5 @@
<?php
/*
* $Author :PHPYUN开发团队
*
@@ -8,111 +9,111 @@
*
* 软件声明:未经授权前提下,不得用于商业运营、二次开发以及任何形式的再次发布。
 */
class model{
class model {
    // 操作状态
    const MODEL_INSERT          =   1;      //  插入模型数据
    const MODEL_UPDATE          =   2;      //  更新模型数据
    const MODEL_BOTH            =   3;      //  包含上面两种方式
    const MUST_VALIDATE         =   1;      // 必须验证
    const EXISTS_VALIDATE       =   0;      // 表单存在字段则验证
    const VALUE_VALIDATE        =   2;      // 表单值不为空则验证
    const MODEL_INSERT = 1;      //  插入模型数据
    const MODEL_UPDATE = 2;      //  更新模型数据
    const MODEL_BOTH = 3;      //  包含上面两种方式
    const MUST_VALIDATE = 1;      // 必须验证
    const EXISTS_VALIDATE = 0;      // 表单存在字段则验证
    const VALUE_VALIDATE = 2;      // 表单值不为空则验证
    //网站配置信息
    protected $config           =   null;
    protected $config = NULL;
    // 当前数据库操作对象
    protected $db               =   null;
    protected $db = NULL;
    // 主键名称
    protected $pk               =   'id';
    protected $pk = 'id';
    // 主键是否自动增长
    protected $autoinc          =   false;
    protected $autoinc = FALSE;
    // 数据表前缀
    protected $def              =   null;
    protected $def = NULL;
    // 模型名称
    protected $name             =   '';
    protected $name = '';
    // 数据库编码
    protected $coding           =   '';
    protected $coding = '';
    // 数据库名称
    // 数据库名称
    protected $dbName           =   '';
    protected $dbName = '';
    //数据库配置
    protected $connection       =   '';
    protected $connection = '';
    // 数据表名(不包含表前缀)
    protected $tableName        =   '';
    protected $tableName = '';
    // 实际数据表名(包含表前缀)
    protected $trueTableName    =   '';
    protected $trueTableName = '';
    // 最近错误信息
    protected $error            =   '';
    protected $error = '';
    // 字段信息
    protected $fields           =   array();
    protected $fields = array();
    // 数据信息
    protected $data             =   array();
    protected $data = array();
    // 查询表达式参数
    protected $options          =   array();
    protected $_validate        =   array();  // 自动验证定义
    protected $_auto            =   array();  // 自动完成定义
    protected $_map             =   array();  // 字段映射定义
    protected $_scope           =   array();  // 命名范围定义
    protected $options = array();
    protected $_validate = array();  // 自动验证定义
    protected $_auto = array();  // 自动完成定义
    protected $_map = array();  // 字段映射定义
    protected $_scope = array();  // 命名范围定义
    // 是否自动检测数据表字段信息
    protected $autoCheckFields  =   true;
    protected $autoCheckFields = TRUE;
    // 是否批处理验证
    protected $patchValidate    =   false;
    protected $patchValidate = FALSE;
    // 链操作方法列表
    protected $methods          =   array('order','alias','having','group','lock','distinct','auto','filter','validate','result','token');
    protected $methods = array('order', 'alias', 'having', 'group', 'lock', 'distinct', 'auto', 'filter', 'validate', 'result', 'token');
    //开启分站功能的数据表
    protected $sitetable        =   array('ad_order','admin_announcement','zhaopinhui','zhaopinhui_com','zhaopinhui_pic','news_base','news_content','resume_expect','member','company_job','resume','user_entrust','user_entrust_record','down_resume','look_resume','company','company_cert','company_msg','company_news','company_order','company_pay','company_product','once_job','resume_tiny','userid_msg','userid_job','look_job','admin_link','px_subject','px_train_news','px_teacher','lt_info','lt_job','report','invoice_record','company_statis','px_train','partjob','hotjob','px_baoming','px_zixun','company_show','resume_show','banner','px_banner','px_train_show','rebates','lt_talent','member_log','login_log','user_change','company_account');
   //此数组针对insert_into方法。目的是添加附表数据的时候,不加入当前站的did,而是存member表中的did。
   // protected $sitetadd=array('ad','admin_announcement','zhaopinhui','news_content','member','resume','company','once_job','px_train','resume_tiny','admin_link','lt_info','partjob','hotjob');
   protected $admindir;
   protected $siteadmindir;
   protected $logininfo;
   public function __construct($db,$def,$logininfo = array(),$tpl=''){
      global $coding,$config,$adminDir,$siteAdminDir;
      $this->db = $db;
      $this->tp = '';//未查到在哪用到
      $this->def = $def;
      $this->md = $coding;
    protected $sitetable = array('ad_order', 'admin_announcement', 'zhaopinhui', 'zhaopinhui_com', 'zhaopinhui_pic', 'news_base', 'news_content', 'resume_expect', 'member', 'company_job', 'resume', 'user_entrust', 'user_entrust_record', 'down_resume', 'look_resume', 'company', 'company_cert', 'company_msg', 'company_news', 'company_order', 'company_pay', 'company_product', 'once_job', 'resume_tiny', 'userid_msg', 'userid_job', 'look_job', 'admin_link', 'px_subject', 'px_train_news', 'px_teacher', 'lt_info', 'lt_job', 'report', 'invoice_record', 'company_statis', 'px_train', 'partjob', 'hotjob', 'px_baoming', 'px_zixun', 'company_show', 'resume_show', 'banner', 'px_banner', 'px_train_show', 'rebates', 'lt_talent', 'member_log', 'login_log', 'user_change', 'company_account');
    //此数组针对insert_into方法。目的是添加附表数据的时候,不加入当前站的did,而是存member表中的did。
    // protected $sitetadd=array('ad','admin_announcement','zhaopinhui','news_content','member','resume','company','once_job','px_train','resume_tiny','admin_link','lt_info','partjob','hotjob');
    protected $admindir;
    protected $siteadmindir;
    protected $logininfo;
    public function __construct($db, $def, $logininfo = array(), $tpl = '') {
        global $coding, $config, $adminDir, $siteAdminDir;
        $this->db = $db;
        $this->tp = '';//未查到在哪用到
        $this->def = $def;
        $this->md = $coding;
        $this->config = $config;
        if (!empty($logininfo)){
        if (!empty($logininfo)) {
            $this->uid = $logininfo['uid'];
            $this->username = $logininfo['username'];
            $this->usertype = $logininfo['usertype'];
        }
      $this->admindir = $adminDir;
      $this->siteadmindir = $siteAdminDir;
      $this->tpl = $tpl;
      if(!($this->config['sy_wapdomain'])){
         $this->config['sy_wapdomain'] = $this->config['sy_weburl'].'/'.$this->config['sy_wapdir'];
      }else{
         if($config['sy_wapssl']=='1'){
            $protocol = 'https://';
         }else{
            $protocol = 'http://';
         }
         if(strpos($this->config['sy_wapdomain'],'http://')===false && strpos($this->config['sy_wapdomain'],'https://')===false)
         {
            $this->config['sy_wapdomain'] = $protocol.$this->config['sy_wapdomain'];
         }
      }
      if($adminDir||!$siteAdminDir){
         //$this->sitetadd = array();
         $this->sitetable = array();
      }
      // oss关闭时,oss地址为服务器地址
      if (!isset($this->config['sy_oss']) || (isset($this->config['sy_oss']) && $this->config['sy_oss'] == 2)){
          $this->config['sy_ossurl'] = $this->config['sy_weburl'];
      }
   }
        $this->admindir = $adminDir;
        $this->siteadmindir = $siteAdminDir;
        $this->tpl = $tpl;
        if (!($this->config['sy_wapdomain'])) {
            $this->config['sy_wapdomain'] = $this->config['sy_weburl'] . '/' . $this->config['sy_wapdir'];
        } else {
            if ($config['sy_wapssl'] == '1') {
                $protocol = 'https://';
            } else {
                $protocol = 'http://';
            }
            if (strpos($this->config['sy_wapdomain'], 'http://') === FALSE && strpos($this->config['sy_wapdomain'], 'https://') === FALSE) {
                $this->config['sy_wapdomain'] = $protocol . $this->config['sy_wapdomain'];
            }
        }
        if ($adminDir || !$siteAdminDir) {
            //$this->sitetadd = array();
            $this->sitetable = array();
        }
        // oss关闭时,oss地址为服务器地址
        if (!isset($this->config['sy_oss']) || (isset($this->config['sy_oss']) && $this->config['sy_oss'] == 2)) {
            $this->config['sy_ossurl'] = $this->config['sy_weburl'];
        }
    }
    /**
     * 设置数据对象的值
     * @access public
@@ -120,11 +121,11 @@
     * @param mixed $value 值
     * @return void
     */
    public function __set($name,$value) {
    public function __set($name, $value) {
        // 设置数据对象属性
        $this->data[$name]  =   $value;
        $this->data[$name] = $value;
    }
    /**
     * 获取数据对象的值
     * @access public
@@ -132,9 +133,9 @@
     * @return mixed
     */
    public function __get($name) {
        return isset($this->data[$name])?$this->data[$name]:null;
        return isset($this->data[$name]) ? $this->data[$name] : NULL;
    }
    /**
     * 检测数据对象的值
     * @access public
@@ -144,7 +145,7 @@
    public function __isset($name) {
        return isset($this->data[$name]);
    }
    /**
     * 销毁数据对象的值
     * @access public
@@ -154,403 +155,419 @@
    public function __unset($name) {
        unset($this->data[$name]);
    }
    // 回调方法 初始化模型
    protected function _initialize() {}
    function insert_into($table,$data=array()){
      $value=array();
      $this->db->connect();
        include(PLUS_PATH.'dbstruct.cache.php');
        $TableFullName=$this->def.$table;
        if(is_array($$TableFullName)){
            $fields=array_keys($$TableFullName);
        }else{
         return false;
      }
      if(is_array($fields)){
         if(is_array($data)){
            foreach($data as $key=>$v){
               if(in_array($key,$fields)){
                  $v = $this->FilterStr($v);
                  $value[]="`".$key."`='".$this->db->escape_string($v)."'";
               }
            }
         }
      }
      $value=@implode(",",$value);
      return $this->DB_insert_once($table,$value);
   }
   function update_once($table,$data=array(),$where=array()){
      $this->db->connect();
      $value=array();
      include(PLUS_PATH.'dbstruct.cache.php');
        $TableFullName=$this->def.$table;
        if(is_array($$TableFullName)){
            $fields=array_keys($$TableFullName);
        }else{
         return false;
      }
      if(is_array($fields)){
         if(is_array($data)){
            foreach($data as $key=>$v){
               if(in_array($key,$fields)){
                  if(is_array($v)){
                      if($v[0] == '+'){
                          $value[]  =  '`'.$key.'` = `'.$key.'` + '.$this->db->escape_string($v[1]);
                            }elseif ($v[0] == '-'){
                          $value[]  =  '`'.$key.'` = `'.$key.'` - '.$this->db->escape_string($v[1]);
                      }else if($v[0] == '='){
                          $value[]  =  '`'.$key.'`  = '.$this->db->escape_string($v[1]);
                      }elseif ($v[0] == 'CASE'){
                          $casesql  =  '`'.$key.'` =  CASE `'.$this->db->escape_string($v[1]).'`';
                          foreach ($v[2] as $ck=>$cv){
                              $casesql  .=  " WHEN '".$ck."' THEN '".$this->db->escape_string($cv)."' ";
                          }
                          $casesql  .=  'END';
                          $value[]  =  $casesql;
                      }elseif ($v[0] == 'DATE_ADD'){
                        $value[]  =  '`'.$key.'` = DATE_ADD(`'.$key.'` , INTERVAL '.$this->db->escape_string($v[1]).' DAY )';
                     }elseif ($v[0] == 'concat'){
                        $value[]  =  '`'.$key.'` = concat(`'.$key.'` , ",'.$this->db->escape_string($v[1]).' ")';
                     }else{
                         $this->db->show_error();
                     }
                  }else{
                      $v = $this->FilterStr($v);
                      $value[] = "`".$key."`='".$this->db->escape_string($v)."'";
                  }
               }
            }
         }
         $whereNew  =  $this->checkWhere($where);
         $value     =  @implode(',',$value);
         if($value !='' && $whereNew !=''){
            return $this->DB_update_all($table,$value,$whereNew);
         }else{
            return false;
         }
      }
   }
   function FilterStr($str){
      $str = stripslashes($str);
      return $str;
   }
    function Memcache_set($name,$value="")
    {
      global $config;
      if(isset($config['ismemcache']) && $config['ismemcache']==2){
         return false;
      }
      if (!empty($config['memcachehost']) && !empty($config['memcacheport']) && !empty($config['memcachetime'])){
          $memcachehost  =  $config['memcachehost'];//所在服务器
          $memcacheport  =  $config['memcacheport'];//所在服务器端口
          $memcachezip   =  0;//是否支持解压缩
          $memcachetime  =  $config['memcachetime'];//缓存时间
          $name=md5(str_replace(array(" ","`","'",".","=","!"),"",$name));
          if(!extension_loaded('memcache'))return;
          $memcache =new memcache();
          if(!@class_exists($memcache)){return;}
          $memcache->connect($memcachehost,$memcacheport) or die ("Memcache连接失败或您的服务器不支持Memcache,请在后台关闭!");
          $val  =  $memcache->get($name);
          if(!is_array($val)){
              $val  =  $value;
              $memcache->set($name,$value,$memcachezip,$memcachetime);
          }
          $memcache->close();
          return $val;
      }else{
          return false;
      }
   }
   /**
    protected function _initialize() {
    }
    function insert_into($table, $data = array()) {
        $value = array();
        $this->db->connect();
        include(PLUS_PATH . 'dbstruct.cache.php');
        $TableFullName = $this->def . $table;
        if (is_array($$TableFullName)) {
            $fields = array_keys($$TableFullName);
        } else {
            return FALSE;
        }
        if (is_array($fields)) {
            if (is_array($data)) {
                foreach ($data as $key => $v) {
                    if (in_array($key, $fields)) {
                        $v = $this->FilterStr($v);
                        $value[] = "`" . $key . "`='" . $this->db->escape_string($v) . "'";
                    }
                }
            }
        }
        $value = @implode(",", $value);
        return $this->DB_insert_once($table, $value);
    }
    function update_once($table, $data = array(), $where = array()) {
        $this->db->connect();
        $value = array();
        include(PLUS_PATH . 'dbstruct.cache.php');
//        $TableFullName=$this->def.$table;
//        var_dump($$TableFullName);exit();
//        if (is_array($where)) {
//            $fields = array_keys($where);
//        } else {
//            return FALSE;
//        }
//        var_dump($fields);exit();
        if (is_array($data)) {
            foreach ($data as $key => $v) {
                if (is_array($v)) {
                    if ($v[0] == '+') {
                        $value[] = '`' . $key . '` = `' . $key . '` + ' . $this->db->escape_string($v[1]);
                    } elseif ($v[0] == '-') {
                        $value[] = '`' . $key . '` = `' . $key . '` - ' . $this->db->escape_string($v[1]);
                    } else if ($v[0] == '=') {
                        $value[] = '`' . $key . '`  = ' . $this->db->escape_string($v[1]);
                    } elseif ($v[0] == 'CASE') {
                        $casesql = '`' . $key . '` =  CASE `' . $this->db->escape_string($v[1]) . '`';
                        foreach ($v[2] as $ck => $cv) {
                            $casesql .= " WHEN '" . $ck . "' THEN '" . $this->db->escape_string($cv) . "' ";
                        }
                        $casesql .= 'END';
                        $value[] = $casesql;
                    } elseif ($v[0] == 'DATE_ADD') {
                        $value[] = '`' . $key . '` = DATE_ADD(`' . $key . '` , INTERVAL ' . $this->db->escape_string($v[1]) . ' DAY )';
                    } elseif ($v[0] == 'concat') {
                        $value[] = '`' . $key . '` = concat(`' . $key . '` , ",' . $this->db->escape_string($v[1]) . ' ")';
                    } else {
                        $this->db->show_error();
                    }
                } else {
                    $v = $this->FilterStr($v);
                    $value[] = "`" . $key . "`='" . $this->db->escape_string($v) . "'";
                }
            }
        }
        $whereNew = $this->checkWhere($where);
        $value = @implode(',', $value);
        if ($value != '' && $whereNew != '') {
            return $this->DB_update_all($table, $value, $whereNew);
        } else {
            return FALSE;
        }
    }
    function FilterStr($str) {
        $str = stripslashes($str);
        return $str;
    }
    function Memcache_set($name, $value = "") {
        global $config;
        if (isset($config['ismemcache']) && $config['ismemcache'] == 2) {
            return FALSE;
        }
        if (!empty($config['memcachehost']) && !empty($config['memcacheport']) && !empty($config['memcachetime'])) {
            $memcachehost = $config['memcachehost'];//所在服务器
            $memcacheport = $config['memcacheport'];//所在服务器端口
            $memcachezip = 0;//是否支持解压缩
            $memcachetime = $config['memcachetime'];//缓存时间
            $name = md5(str_replace(array(" ", "`", "'", ".", "=", "!"), "", $name));
            if (!extension_loaded('memcache')) return;
            $memcache = new memcache();
            if (!@class_exists($memcache)) {
                return;
            }
            $memcache->connect($memcachehost, $memcacheport) or die ("Memcache连接失败或您的服务器不支持Memcache,请在后台关闭!");
            $val = $memcache->get($name);
            if (!is_array($val)) {
                $val = $value;
                $memcache->set($name, $value, $memcachezip, $memcachetime);
            }
            $memcache->close();
            return $val;
        } else {
            return FALSE;
        }
    }
    /**
     * 通用数量查询$tablename,$where = 1, $select="*"
     */
   function DB_select_num($tablename, $where = '', $select = "*",$tablename2='',$special=''){
      if(!$this->checkTableName($tablename)){
         return false;
      }
      $cachename=$tablename.$where;
      if(!$return=$this->Memcache_set($cachename)){//获取是否存在memcache
         if($tablename2){
            if($this->siteadmindir && $special==''){
               if(in_array($tablename,$this->sitetable) && is_numeric($this->config['did'])){
                 $Where='a.`did`='.$this->config['did']."' and ".$Where;
               }
               if(in_array($tablename2,$this->sitetable) && is_numeric($this->config['did'])){
                 $Where='b.`did`='.$this->config['did']."' and ".$Where;
               }
            }
            $SQL = "SELECT count($select) as num FROM " . $this->def . $tablename . " as a," . $this->def . $tablename2 . " as b  WHERE $where";
         }else{
            if($this->siteadmindir && $special==''){
               $where = $this->site_fetchsql($where,$tablename);
            }
            $SQL = "SELECT count($select) as num FROM " . $this->def . $tablename;
            if($where)
            {
               $SQL   .=   " WHERE ".$where;
            }
         }
         $query = $this->db->query($SQL);
         while($row=$this->db->fetch_array($query)){$return=$row['num'];}
         $this->Memcache_set($cachename,$return);//设置memcache
      }
      if($return<1){$return='0';}
      return $return;
   }
   function select_num($tablename, $where = array(), $select = "*"){
      if(!$this->checkTableName($tablename)){
         return false;
      }
      if($this->siteadmindir){
          if(in_array($tablename,$this->sitetable)){
              if(is_numeric($this->config['did'])){
                  $where['did']=$this->config['did'];
              }
          }
      }
      $whereNew  =  $this->checkWhere($where);
      $cachename =  $tablename.$whereNew;
      if(!$return=$this->Memcache_set($cachename)){//获取是否存在memcache
          $SQL = "SELECT count($select) as num FROM " . $this->def . $tablename . $whereNew;
         $query = $this->db->query($SQL);
         while($row=$this->db->fetch_array($query)){$return=$row['num'];}
         $this->Memcache_set($cachename,$return);//设置memcache
      }
      if($return<1){$return='0';}
      return $return;
   }
   /**
     * 通用query查询 $tablename,$where = 1, $select="*"
    *$special:标记某些特殊查询,不使用did参数。
    *2016-1-14      LGL
     */
   function DB_select_query($tablename, $where = 1, $select = "*",$special='') {
      if(!$this->checkTableName($tablename)){
         return false;
      }
      if($this->siteadmindir){
         $where = $this->site_fetchsql($where,$tablename);
      }
       $SQL = "SELECT $select FROM " . $this->def . $tablename . " WHERE $where";
      $query=$this->db->query($SQL);
      return $query;
   }
   /**
     * 通用all查询 $tablename,$where = 1, $select="*"
    *$special:标记某些特殊查询,不使用did参数。
     */
   function DB_select_all($tablename, $where = 1, $select = "*",$special='') {
      if(!$this->checkTableName($tablename)){
         return false;
      }
      $cachename=$tablename.$where;
      if(!$row_return=$this->Memcache_set($cachename)){//获取是否存在memcache
         $row_return=array();
         if($this->siteadmindir&&$special==''){
               $where = $this->site_fetchsql($where,$tablename);
         }
         $SQL = "SELECT $select FROM `" . $this->def . $tablename . "`";
         if( $where ){
            $SQL .= " WHERE ".$where;
         }
         $query=$this->db->query($SQL);
            while($row=$this->db->fetch_array($query)){$row_return[]=$row;}
            $this->Memcache_set($cachename,$row_return);//设置memcache
      }
        return $row_return;
   }
   //新多条查询
   function select_all($tablename, $where = array(), $select = "*",$special='') {
      if(!$this->checkTableName($tablename)){
         return false;
      }
      if($this->siteadmindir && $special==''){
         if(in_array($tablename,$this->sitetable)){
            if(is_numeric($this->config['did'])){
               $where['did']=$this->config['did'];
            }
         }
      }
      $whereNew   =   $this->checkWhere($where);
      $cachename  =  $tablename.$whereNew;
      if(!$row_return=$this->Memcache_set($cachename)){//获取是否存在memcache
         $row_return=array();
         /*if($this->siteadmindir&&$special==''){
               $whereNew = $this->site_fetchsql($whereNew,$tablename);
         }  */
         $SQL = "SELECT $select FROM `" . $this->def . $tablename . "`" . $whereNew;
         $query = $this->db->query($SQL);
            while($row=$this->db->fetch_array($query)){
    function DB_select_num($tablename, $where = '', $select = "*", $tablename2 = '', $special = '') {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        $cachename = $tablename . $where;
        if (!$return = $this->Memcache_set($cachename)) {//获取是否存在memcache
            if ($tablename2) {
                if ($this->siteadmindir && $special == '') {
                    if (in_array($tablename, $this->sitetable) && is_numeric($this->config['did'])) {
                        $Where = 'a.`did`=' . $this->config['did'] . "' and " . $Where;
                    }
                    if (in_array($tablename2, $this->sitetable) && is_numeric($this->config['did'])) {
                        $Where = 'b.`did`=' . $this->config['did'] . "' and " . $Where;
                    }
                }
                
                $row_return[]  =  $row;
                $SQL = "SELECT count($select) as num FROM " . $this->def . $tablename . " as a," . $this->def . $tablename2 . " as b  WHERE $where";
            } else {
                if ($this->siteadmindir && $special == '') {
                    $where = $this->site_fetchsql($where, $tablename);
                }
                $SQL = "SELECT count($select) as num FROM " . $this->def . $tablename;
                if ($where) {
                    $SQL .= " WHERE " . $where;
                }
            }
            $this->Memcache_set($cachename,$row_return);//设置memcache
      }
            $query = $this->db->query($SQL);
            while ($row = $this->db->fetch_array($query)) {
                $return = $row['num'];
            }
            $this->Memcache_set($cachename, $return);//设置memcache
        }
        if ($return < 1) {
            $return = '0';
        }
        return $return;
    }
    function select_num($tablename, $where = array(), $select = "*") {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        if ($this->siteadmindir) {
            if (in_array($tablename, $this->sitetable)) {
                if (is_numeric($this->config['did'])) {
                    $where['did'] = $this->config['did'];
                }
            }
        }
        $whereNew = $this->checkWhere($where);
        $cachename = $tablename . $whereNew;
        if (!$return = $this->Memcache_set($cachename)) {//获取是否存在memcache
            $SQL = "SELECT count($select) as num FROM " . $this->def . $tablename . $whereNew;
            $query = $this->db->query($SQL);
            while ($row = $this->db->fetch_array($query)) {
                $return = $row['num'];
            }
            $this->Memcache_set($cachename, $return);//设置memcache
        }
        if ($return < 1) {
            $return = '0';
        }
        return $return;
    }
    /**
     * 通用query查询 $tablename,$where = 1, $select="*"
     *$special:标记某些特殊查询,不使用did参数。
     *2016-1-14        LGL
     */
    function DB_select_query($tablename, $where = 1, $select = "*", $special = '') {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        if ($this->siteadmindir) {
            $where = $this->site_fetchsql($where, $tablename);
        }
        $SQL = "SELECT $select FROM " . $this->def . $tablename . " WHERE $where";
        $query = $this->db->query($SQL);
        return $query;
    }
    /**
     * 通用all查询 $tablename,$where = 1, $select="*"
     *$special:标记某些特殊查询,不使用did参数。
     */
    function DB_select_all($tablename, $where = 1, $select = "*", $special = '') {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        $cachename = $tablename . $where;
        if (!$row_return = $this->Memcache_set($cachename)) {//获取是否存在memcache
            $row_return = array();
            if ($this->siteadmindir && $special == '') {
                $where = $this->site_fetchsql($where, $tablename);
            }
            $SQL = "SELECT $select FROM `" . $this->def . $tablename . "`";
            if ($where) {
                $SQL .= " WHERE " . $where;
            }
            $query = $this->db->query($SQL);
            while ($row = $this->db->fetch_array($query)) {
                $row_return[] = $row;
            }
            $this->Memcache_set($cachename, $row_return);//设置memcache
        }
        return $row_return;
   }
   /**
    }
    //新多条查询
    function select_all($tablename, $where = array(), $select = "*", $special = '') {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        if ($this->siteadmindir && $special == '') {
            if (in_array($tablename, $this->sitetable)) {
                if (is_numeric($this->config['did'])) {
                    $where['did'] = $this->config['did'];
                }
            }
        }
        $whereNew = $this->checkWhere($where);
        $cachename = $tablename . $whereNew;
        if (!$row_return = $this->Memcache_set($cachename)) {//获取是否存在memcache
            $row_return = array();
            /*if($this->siteadmindir&&$special==''){
                    $whereNew = $this->site_fetchsql($whereNew,$tablename);
            }  */
            $SQL = "SELECT $select FROM `" . $this->def . $tablename . "`" . $whereNew;
            $query = $this->db->query($SQL);
            while ($row = $this->db->fetch_array($query)) {
                $row_return[] = $row;
            }
            $this->Memcache_set($cachename, $row_return);//设置memcache
        }
        return $row_return;
    }
    /**
     * 通用all查询双表 $tablename1,$tablename2, $where = 1, $select = "*"
     */
   function DB_select_alls($tablename1,$tablename2, $where = 1, $select = "*") {
      if(!$this->checkTableName($tablename1)){
         return false;
      }
      if(!$this->checkTableName($tablename2)){
         return false;
      }
      $cachename=$tablename1.$tablename2.$where;
      if(!$row_return=$this->Memcache_set($cachename)){//获取是否存在memcache
         if($this->siteadmindir){
             if(in_array($tablename1,$this->sitetable) && is_numeric($this->config['did'])){
                  $where='a.`did`='.$this->config['did']." and ".$where;
             }
             if(in_array($tablename2,$this->sitetable) && is_numeric($this->config['did'])){
                  $where='b.`did`='.$this->config['did']." and ".$where;
             }
         }
         $SQL = "SELECT $select FROM " . $this->def . $tablename1. " as a," . $this->def . $tablename2 . " as b WHERE $where";
         $query=$this->db->query($SQL);
            while($row=$this->db->fetch_array($query)){$row_return[]=$row;}
            $this->Memcache_set($cachename,$row_return);//设置memcache
      }
    function DB_select_alls($tablename1, $tablename2, $where = 1, $select = "*") {
        if (!$this->checkTableName($tablename1)) {
            return FALSE;
        }
        if (!$this->checkTableName($tablename2)) {
            return FALSE;
        }
        $cachename = $tablename1 . $tablename2 . $where;
        if (!$row_return = $this->Memcache_set($cachename)) {//获取是否存在memcache
            if ($this->siteadmindir) {
                if (in_array($tablename1, $this->sitetable) && is_numeric($this->config['did'])) {
                    $where = 'a.`did`=' . $this->config['did'] . " and " . $where;
                }
                if (in_array($tablename2, $this->sitetable) && is_numeric($this->config['did'])) {
                    $where = 'b.`did`=' . $this->config['did'] . " and " . $where;
                }
            }
            $SQL = "SELECT $select FROM " . $this->def . $tablename1 . " as a," . $this->def . $tablename2 . " as b WHERE $where";
            $query = $this->db->query($SQL);
            while ($row = $this->db->fetch_array($query)) {
                $row_return[] = $row;
            }
            $this->Memcache_set($cachename, $row_return);//设置memcache
        }
        return $row_return;
   }
   /**
    }
    /**
     * 单表单条插入 $tablename, $value
     */
   function DB_insert_once($tablename, $value){
      if(!$this->checkTableName($tablename)){
         return false;
      }
      if(in_array($tablename,$this->sitetable) && strpos($value,'`did`')===false){
         $value.=",`did`='".$this->config['did']."'";
      }
      $SQL = "INSERT INTO `" . $this->def . $tablename . "` SET ".$value;
      $this->db->query("set sql_mode=''");
      $this->db->query($SQL);
      $nid= $this->db->insert_id();
      return $nid;
   }
    function DB_insert_once($tablename, $value) {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        if (in_array($tablename, $this->sitetable) && strpos($value, '`did`') === FALSE) {
            $value .= ",`did`='" . $this->config['did'] . "'";
        }
        $SQL = "INSERT INTO `" . $this->def . $tablename . "` SET " . $value;
        $this->db->query("set sql_mode=''");
        $this->db->query($SQL);
        $nid = $this->db->insert_id();
        return $nid;
    }
    //一次插入多条数据,方便本地测试数据库构造数据进行测试
    function DB_insert_multi($tablename, $valueArr){
    function DB_insert_multi($tablename, $valueArr) {
        // INSERT INTO `roles` (`uid`,`rid`) VALUES
        //    (534,14),(535,14),(536,14),(537,14),(539,14)
       if(!$this->checkTableName($tablename)){
          return false;
       }
        include(PLUS_PATH.'dbstruct.cache.php');
        $TableFullName=$this->def.$tablename;
        if(is_array($$TableFullName)){
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        include(PLUS_PATH . 'dbstruct.cache.php');
        $TableFullName = $this->def . $tablename;
        if (is_array($$TableFullName)) {
            $fieldsArr = array_keys($$TableFullName);
        }
        if($fieldsArr){
        if ($fieldsArr) {
            $fields = array();
            foreach($valueArr[0] as $f => $v){
                if(in_array($f, $fieldsArr)){
            foreach ($valueArr[0] as $f => $v) {
                if (in_array($f, $fieldsArr)) {
                    $fields [] = "`$f`";
                }
            }
            $fields = implode(',', $fields);
            $values = array();
            foreach($valueArr as $r){
            foreach ($valueArr as $r) {
                $arr = array();
                foreach($r as $k => $v){
                    if(in_array($k, $fieldsArr)){
                foreach ($r as $k => $v) {
                    if (in_array($k, $fieldsArr)) {
                        $arr [] = "'" . $this->db->escape_string($v) . "'";
                    }
                }
@@ -559,107 +576,108 @@
            $values = implode(',', $values);
            $SQL = "INSERT INTO `{$this->def}{$tablename}` ($fields) VALUES $values";
            $this->db->query("set sql_mode=''");
            $return=$this->db->query($SQL);
            $return = $this->db->query($SQL);
            return $return;
        }
    }
   /**
    /**
     * 更新 $tablename, $value, $where = 1
     */
   function DB_update_all($tablename, $value, $where ,$pecial=''){
      if(!$this->checkTableName($tablename)){
         return false;
      }
    function DB_update_all($tablename, $value, $where, $pecial = '') {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        
      if(empty($where) || empty($value)){
          return false;
      }
        $SQL = "UPDATE `" . $this->def . $tablename . "` SET $value  ".$where;
        if (empty($where) || empty($value)) {
            return FALSE;
        }
        $SQL = "UPDATE `" . $this->def . $tablename . "` SET $value  " . $where;
        $this->db->query("set sql_mode=''");
      $return=$this->db->query($SQL);
      return $return;
   }
   /**
        $return = $this->db->query($SQL);
        return $return;
    }
    /**
     * 删除 $tablename, $value, $where = 1
     */
   function DB_delete_all($tablename, $where, $limit = 'limit 1',$pecial='', $norecycle = ''){
      if(!$this->checkTableName($tablename)){
         return false;
      }
      if(empty($where)){
         return false;
      }
      if($pecial!=$tablename){
         //快速创建简历保存数据不进入回收站
         if(!in_array($tablename,array('temporary_resume')) && $norecycle != '1'){
            $this->insert_recycle($tablename,$this->site_fetchsql($where,$tablename));//先执行回收站
         }
         $SQL = "DELETE FROM `" . $this->def . $tablename . "` WHERE ".$this->site_fetchsql($where,$tablename)." $limit";
      }else{
         //快速创建简历保存数据不进入回收站
         if(!in_array($tablename,array('temporary_resume')) && $norecycle != '1'){
            $this->insert_recycle($tablename,$where);//先执行回收站
         }
         $SQL = "DELETE FROM `" . $this->def . $tablename . "` WHERE ".$where." $limit";
      }
      $this->db->query("set `sql_mode`=''");
      return $this->db->query($SQL);
   }
   /**
    *   @desc 删除数据库
    *  @param   $tablename   数据表名;
            $where      删除数据表数据查询条件;
            $limit      删除记录数
            $pecial      暂未发现使用
            $norecycle   1:不做回收站插入操作
    */
   function delete_all($tablename, $where = array(), $limit = 'limit 1', $special='', $norecycle = '')
   {
      if(!$this->checkTableName($tablename)){
         return false;
      }
      include(PLUS_PATH.'dbstruct.cache.php');
      if($this->siteadmindir && $special==''){
         if(in_array($tablename,$this->sitetable)){
            if(is_numeric($this->config['did'])){
               $where['did']=$this->config['did'];
            }
         }
      }
      $whereNew   =   $this->checkWhere($where);
      if(!empty($whereNew)){
         //快速创建简历保存数据不进入回收站
         if(!in_array($tablename,array('temporary_resume')) && $norecycle!='1'){
            $this->insert_recycle($tablename,$whereNew);//先执行回收站
         }
         $SQL   = "DELETE FROM `" . $this->def . $tablename . "` ".$whereNew." ".$limit;
      }else{
         return false;
      }
      $this->db->query("set `sql_mode`=''");
      return $this->db->query($SQL);
   }
    function DB_delete_all($tablename, $where, $limit = 'limit 1', $pecial = '', $norecycle = '') {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        if (empty($where)) {
            return FALSE;
        }
        if ($pecial != $tablename) {
            //快速创建简历保存数据不进入回收站
            if (!in_array($tablename, array('temporary_resume')) && $norecycle != '1') {
                $this->insert_recycle($tablename, $this->site_fetchsql($where, $tablename));//先执行回收站
            }
            $SQL = "DELETE FROM `" . $this->def . $tablename . "` WHERE " . $this->site_fetchsql($where, $tablename) . " $limit";
        } else {
            //快速创建简历保存数据不进入回收站
            if (!in_array($tablename, array('temporary_resume')) && $norecycle != '1') {
                $this->insert_recycle($tablename, $where);//先执行回收站
            }
            $SQL = "DELETE FROM `" . $this->def . $tablename . "` WHERE " . $where . " $limit";
        }
        $this->db->query("set `sql_mode`=''");
        return $this->db->query($SQL);
    }
    /**
     * @desc 删除数据库
     * @param    $tablename    数据表名;
     * $where        删除数据表数据查询条件;
     * $limit        删除记录数
     * $pecial        暂未发现使用
     * $norecycle    1:不做回收站插入操作
     */
    function delete_all($tablename, $where = array(), $limit = 'limit 1', $special = '', $norecycle = '') {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        include(PLUS_PATH . 'dbstruct.cache.php');
        if ($this->siteadmindir && $special == '') {
            if (in_array($tablename, $this->sitetable)) {
                if (is_numeric($this->config['did'])) {
                    $where['did'] = $this->config['did'];
                }
            }
        }
        $whereNew = $this->checkWhere($where);
        if (!empty($whereNew)) {
            //快速创建简历保存数据不进入回收站
            if (!in_array($tablename, array('temporary_resume')) && $norecycle != '1') {
                $this->insert_recycle($tablename, $whereNew);//先执行回收站
            }
            $SQL = "DELETE FROM `" . $this->def . $tablename . "` " . $whereNew . " " . $limit;
        } else {
            return FALSE;
        }
        $this->db->query("set `sql_mode`=''");
        return $this->db->query($SQL);
    }
    /**
     * 删除进入回收站
     *
@@ -667,645 +685,652 @@
     * @param $where
     * @return bool
     */
    function insert_recycle($tablename, $where)
    {
    function insert_recycle($tablename, $where) {
        if (!$this->checkTableName($tablename)) {
            return false;
            return FALSE;
        }
        //回收站同一次操作生成数据MD5用作识别同一次操作的标识符
        if (!$this->__isset('recyclemd5')) {
            $recyclemd5 =   md5($tablename.$where);
            $recyclemd5 = md5($tablename . $where);
            $this->__set('recyclemd5', $recyclemd5);
        } else {
            //获取当前操作模块的统一标识符
            $recyclemd5 =   $this->__get('recyclemd5');
            $recyclemd5 = $this->__get('recyclemd5');
        }
        if (!isset($_GET['isdel']) || $_GET['isdel'] != "all") {
            $value  =   "tablename = '" . $tablename . "', ";
            $value  .=   "ctime = '" . time() . "', ";
            $value = "tablename = '" . $tablename . "', ";
            $value .= "ctime = '" . time() . "', ";
            if (isset($_SESSION['auid']) && isset($_SESSION['ausername']) && $_SESSION['auid'] && $_SESSION['ausername']) {
                $username   =   $_SESSION['ausername'];
                $uid        =   $_SESSION['auid'];
                $username = $_SESSION['ausername'];
                $uid = $_SESSION['auid'];
            } else {
                $username   =   isset($this->username) ? $this->username : '';
                $uid        =   isset($this->uid) ? $this->uid : '';
                $username = isset($this->username) ? $this->username : '';
                $uid = isset($this->uid) ? $this->uid : '';
            }
            $value  .=  "uid = '" . $uid . "', ";
            $value  .=  "username = '" . $username . "', ";
            $value  .=  "uri = '" . $_SERVER['REQUEST_URI'] . "', ";
            $query  =   $this->db->query("SELECT * FROM " . $this->def . $tablename . "  $where");
            $row_del=   array();
            $value .= "uid = '" . $uid . "', ";
            $value .= "username = '" . $username . "', ";
            $value .= "uri = '" . $_SERVER['REQUEST_URI'] . "', ";
            $query = $this->db->query("SELECT * FROM " . $this->def . $tablename . "  $where");
            $row_del = array();
            while ($row = $this->db->fetch_assoc($query)) {
                $row_del[]  =   $row;
                $row_del[] = $row;
            }
            if (!empty($row_del)) {
                foreach ($row_del as $delvalue) {
                    $this->DB_insert_once('recycle', $value . "`body`='" . serialize($delvalue) . "',`ident`='" . $recyclemd5 . "'");
                }
            }
        }
    }
    /**
     * 自定义SQL执行 便于多表联合、left join等组合查询语句
     */
    function DB_query_all($sql, $type = 'one')
    {
    function DB_query_all($sql, $type = 'one') {
        $this->db->query("set sql_mode=''");
        $query  =   $this->db->query($sql);
        $query = $this->db->query($sql);
        if ($type == 'all') {
            while ($row = $this->db->fetch_array($query)) {
                $return[]   =   $row;
                $return[] = $row;
            }
        } else {
            $return         =   $this->db->fetch_array($query);
            $return = $this->db->fetch_array($query);
        }
        return $return;
    }
   /**
    /**
     * 通用单条查询$tablename,$where = 1, $select="*"
     */
   function DB_select_once($tablename, $where = 1, $select = "*",$special='') {
      if(!$this->checkTableName($tablename)){
         return false;
      }
      $cachename=$tablename.$where;
      if(!$return=$this->Memcache_set($cachename)){//获取是否存在memcache
         if($this->siteadmindir   &&   $special==''){
            $where = $this->site_fetchsql($where,$tablename);
         }
         $SQL = 'SELECT '.$select.' FROM ' . $this->def . $tablename;
         if($where)
         {
            $SQL .= ' WHERE '.$where;
         }
         $SQL .= ' LIMIT 1';
         $query = $this->db->query($SQL);
         $return=$this->db->fetch_array($query);
         $this->Memcache_set($cachename,$return);//设置memcache
      }
      return $return;
   }
   //新单条查询
   function select_once($tablename, $where = array(), $select = "*",$special='') {
      if(!$this->checkTableName($tablename)){
         return false;
      }
      if($this->siteadmindir && $special==''){
         if(in_array($tablename,$this->sitetable)){
            if(is_numeric($this->config['did'])){
               $where['did']=$this->config['did'];
            }
         }
      }
      $whereNew = $this->checkWhere($where);
      $cachename=$tablename.$whereNew;
      if(!$return=$this->Memcache_set($cachename)){//获取是否存在memcache
         /*if($this->siteadmindir   &&   $special==''){
            $whereNew = $this->site_fetchsql($whereNew,$tablename);
         }*/
         $SQL = 'SELECT '.$select.' FROM ' . $this->def . $tablename . $whereNew;
         $SQL .= ' LIMIT 1';
         $query = $this->db->query($SQL);
         $return=$this->db->fetch_array($query);
         $this->Memcache_set($cachename,$return);//设置memcache
      }
      return $return;
   }
   function member_log($content,$opera='',$type='',$uid=null,$usertype=null){//会员日志
       if(!$uid && !$usertype){
           $uid = intval($_COOKIE['uid']);
           $usertype = intval($_COOKIE['usertype']);
       }
       if($uid && $usertype){
           $value="`uid`='".$uid."',";
           $value.="`usertype`='".$usertype."',";
         $value.="`content`='".$content."',";
         $value.="`opera`='".$opera."',";
         $value.="`type`='".$type."',";
         $value.="`ip`='".fun_ip_get()."',";
         $value.="`ctime`='".time()."'";
         $this->DB_insert_once("member_log",$value);
      }
   }
    function FormatOptions($Options){
        if(!is_array($Options)){return array('field'=>'*','where'=>'');}
        $WhereStr='';
        if($Options['field']){
            $Field=$Options['field'];
            unset($Options['field']);
        }else{
            $Field='*';
    function DB_select_once($tablename, $where = 1, $select = "*", $special = '') {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
      if($Options['special']){
            $special=$Options['special'];
        $cachename = $tablename . $where;
        if (!$return = $this->Memcache_set($cachename)) {//获取是否存在memcache
            if ($this->siteadmindir && $special == '') {
                $where = $this->site_fetchsql($where, $tablename);
            }
            $SQL = 'SELECT ' . $select . ' FROM ' . $this->def . $tablename;
            if ($where) {
                $SQL .= ' WHERE ' . $where;
            }
            $SQL .= ' LIMIT 1';
            $query = $this->db->query($SQL);
            $return = $this->db->fetch_array($query);
            $this->Memcache_set($cachename, $return);//设置memcache
        }
        return $return;
    }
    //新单条查询
    function select_once($tablename, $where = array(), $select = "*", $special = '') {
        if (!$this->checkTableName($tablename)) {
            return FALSE;
        }
        if ($this->siteadmindir && $special == '') {
            if (in_array($tablename, $this->sitetable)) {
                if (is_numeric($this->config['did'])) {
                    $where['did'] = $this->config['did'];
                }
            }
        }
        $whereNew = $this->checkWhere($where);
        $cachename = $tablename . $whereNew;
        if (!$return = $this->Memcache_set($cachename)) {//获取是否存在memcache
            /*if($this->siteadmindir   &&   $special==''){
                $whereNew = $this->site_fetchsql($whereNew,$tablename);
            }*/
            $SQL = 'SELECT ' . $select . ' FROM ' . $this->def . $tablename . $whereNew;
            $SQL .= ' LIMIT 1';
            $query = $this->db->query($SQL);
            $return = $this->db->fetch_array($query);
            $this->Memcache_set($cachename, $return);//设置memcache
        }
        return $return;
    }
    function member_log($content, $opera = '', $type = '', $uid = NULL, $usertype = NULL) {//会员日志
        if (!$uid && !$usertype) {
            $uid = intval($_COOKIE['uid']);
            $usertype = intval($_COOKIE['usertype']);
        }
        if ($uid && $usertype) {
            $value = "`uid`='" . $uid . "',";
            $value .= "`usertype`='" . $usertype . "',";
            $value .= "`content`='" . $content . "',";
            $value .= "`opera`='" . $opera . "',";
            $value .= "`type`='" . $type . "',";
            $value .= "`ip`='" . fun_ip_get() . "',";
            $value .= "`ctime`='" . time() . "'";
            $this->DB_insert_once("member_log", $value);
        }
    }
    function FormatOptions($Options) {
        if (!is_array($Options)) {
            return array('field' => '*', 'where' => '');
        }
        $WhereStr = '';
        if ($Options['field']) {
            $Field = $Options['field'];
            unset($Options['field']);
        } else {
            $Field = '*';
        }
        if ($Options['special']) {
            $special = $Options['special'];
            unset($Options['special']);
        }
      if($Options['groupby']){
            $WhereStr.=' group by '.$Options['groupby'];
        if ($Options['groupby']) {
            $WhereStr .= ' group by ' . $Options['groupby'];
        }
        if($Options['orderby']){
            $WhereStr.=' order by '.$Options['orderby'];
        if ($Options['orderby']) {
            $WhereStr .= ' order by ' . $Options['orderby'];
        }
      if($Options['desc']){
            $WhereStr.=" ".$Options['desc'];
        if ($Options['desc']) {
            $WhereStr .= " " . $Options['desc'];
        }
        if($Options['limit']){
            $WhereStr.=' limit '.$Options['limit'];
        if ($Options['limit']) {
            $WhereStr .= ' limit ' . $Options['limit'];
        }
        return array('field'=>$Field,'order'=>$WhereStr,"special"=>$special);
        return array('field' => $Field, 'order' => $WhereStr, "special" => $special);
    }
   function FormatWhere($Where){
        $WhereStr='1';
        foreach($Where as $k=>$v){
    function FormatWhere($Where) {
        $WhereStr = '1';
        foreach ($Where as $k => $v) {
            //两种方式:1,'uid'=>1 ; 2,'`uid` in (1,2,3)'
            //TODO:检查字段是否存在
            if(is_numeric($k)){
                if((substr(trim($v),0,3)=='and')||(substr(trim($v),0,2)=='or')){
                    $WhereStr.=' '.$v;
                }elseif($v){
                    $WhereStr.=' and '.$v;
            if (is_numeric($k)) {
                if ((substr(trim($v), 0, 3) == 'and') || (substr(trim($v), 0, 2) == 'or')) {
                    $WhereStr .= ' ' . $v;
                } elseif ($v) {
                    $WhereStr .= ' and ' . $v;
                }
            }else{
            /* where允许的格式:
               $where = array('uid' => $this->uid,
                  'name <> ' => '',
                  'age > '   => '18',
                  'height <' => '65'
               );
            */
            if(strpos($k,'<>') > 0){
               $position = strpos($k,'<>');
               $fieldName = trim(substr($k,0,$position));
               $WhereStr .=' and `'.$fieldName.'` <> \''.$v.'\'';
            }
            elseif(strpos($k,'<') > 0){
               $position = strpos($k,'<');
               $fieldName = trim(substr($k,0,$position));
               $WhereStr .=' and `'.$fieldName.'` < \''.$v.'\'';
            }
            elseif(strpos($k,'>') > 0){
               $position = strpos($k,'>');
               $fieldName = trim(substr($k,0,$position));
               $WhereStr .=' and `'.$fieldName.'` > \''.$v.'\'';
            }
            else{
               $WhereStr .=' and `'.$k.'`=\''.$v.'\'';
            }
            } else {
                /* where允许的格式:
                    $where = array('uid' => $this->uid,
                        'name <> ' => '',
                        'age > '   => '18',
                        'height <' => '65'
                    );
                */
                if (strpos($k, '<>') > 0) {
                    $position = strpos($k, '<>');
                    $fieldName = trim(substr($k, 0, $position));
                    $WhereStr .= ' and `' . $fieldName . '` <> \'' . $v . '\'';
                } elseif (strpos($k, '<') > 0) {
                    $position = strpos($k, '<');
                    $fieldName = trim(substr($k, 0, $position));
                    $WhereStr .= ' and `' . $fieldName . '` < \'' . $v . '\'';
                } elseif (strpos($k, '>') > 0) {
                    $position = strpos($k, '>');
                    $fieldName = trim(substr($k, 0, $position));
                    $WhereStr .= ' and `' . $fieldName . '` > \'' . $v . '\'';
                } else {
                    $WhereStr .= ' and `' . $k . '`=\'' . $v . '\'';
                }
            }
        }
        return $WhereStr;
    }
   function FormatValues($Values){
        $ValuesStr='';
        foreach($Values as $k=>$v){
    function FormatValues($Values) {
        $ValuesStr = '';
        foreach ($Values as $k => $v) {
            //两种方式:1,'uid'=>1 ; 2,'`uid` in (1,2,3)'
            //TODO:检查字段是否存在
         if(preg_match("/^[a-zA-Z0-9_]+$/",$k)){
             if(preg_match('/^[0-9]+$/', $k)){
               $FiledList = @explode(',',$v);
               if(is_array($FiledList)){
                  foreach($FiledList as $Fv){
                     $FvList = @explode('=',$Fv);
                     if($FvList[1]){
                           if(strpos($FvList[1],'+') > 0){
                              $FiledV = @explode('+',$FvList[1]);
                              $ValuesStr.=',`'.str_replace("`",'',$FvList[0]).'`=`'.str_replace("`",'',$FiledV[0]).'`+\''.intval(str_replace("'",'',$FiledV[1])).'\'';
                           }
                           if(strpos($FvList[1],'-') > 0){
                              $FiledV = @explode('-',$FvList[1]);
                              $ValuesStr.=',`'.str_replace("`",'',$FvList[0]).'`=`'.str_replace("`",'',$FiledV[0]).'`-\''.intval(str_replace("'",'',$FiledV[1])).'\'';
                           }
                     }
                  }
               }
            }else{
               $ValuesStr.=',`'.$k.'`=\''.$v.'\'';
            }
         }
            if (preg_match("/^[a-zA-Z0-9_]+$/", $k)) {
                if (preg_match('/^[0-9]+$/', $k)) {
                    $FiledList = @explode(',', $v);
                    if (is_array($FiledList)) {
                        foreach ($FiledList as $Fv) {
                            $FvList = @explode('=', $Fv);
                            if ($FvList[1]) {
                                if (strpos($FvList[1], '+') > 0) {
                                    $FiledV = @explode('+', $FvList[1]);
                                    $ValuesStr .= ',`' . str_replace("`", '', $FvList[0]) . '`=`' . str_replace("`", '', $FiledV[0]) . '`+\'' . intval(str_replace("'", '', $FiledV[1])) . '\'';
                                }
                                if (strpos($FvList[1], '-') > 0) {
                                    $FiledV = @explode('-', $FvList[1]);
                                    $ValuesStr .= ',`' . str_replace("`", '', $FvList[0]) . '`=`' . str_replace("`", '', $FiledV[0]) . '`-\'' . intval(str_replace("'", '', $FiledV[1])) . '\'';
                                }
                            }
                        }
                    }
                } else {
                    $ValuesStr .= ',`' . $k . '`=\'' . $v . '\'';
                }
            }
        }
        return substr($ValuesStr,1);
        return substr($ValuesStr, 1);
    }
   //提醒处理
    function RemindDeal($TableName,$Values=array(),$Where=array()){
      if(!$this->checkTableName($TableName)){
         return false;
      }
        $ValuesStr  =   $this->FormatValues($Values);
        $WhereStr   =   $this->FormatWhere($Where);
        $this->DB_update_all($TableName,$ValuesStr,$WhereStr);
    //提醒处理
    function RemindDeal($TableName, $Values = array(), $Where = array()) {
        if (!$this->checkTableName($TableName)) {
            return FALSE;
        }
        $ValuesStr = $this->FormatValues($Values);
        $WhereStr = $this->FormatWhere($Where);
        $this->DB_update_all($TableName, $ValuesStr, $WhereStr);
    }
    function site_fetchsql($Where,$TableName,$SplitChar=' and '){
      if(!$this->checkTableName($TableName)){
         return false;
      }
        if(in_array($TableName,$this->sitetable)){
            if(is_array($Where)&&is_numeric($this->config['did'])){
            $Where['did']=$this->config['did'];
            }else if(is_numeric($this->config['did'])){
            $Where='`did`='.$this->config['did'].$SplitChar.$Where;
    function site_fetchsql($Where, $TableName, $SplitChar = ' and ') {
        if (!$this->checkTableName($TableName)) {
            return FALSE;
        }
        if (in_array($TableName, $this->sitetable)) {
            if (is_array($Where) && is_numeric($this->config['did'])) {
                $Where['did'] = $this->config['did'];
            } else if (is_numeric($this->config['did'])) {
                $Where = '`did`=' . $this->config['did'] . $SplitChar . $Where;
            }
        }
        return $Where;
    }
   //调用分页,$table表名,$where条件,$pageurl分页链接,$limit条数,$rowsname模板接收变量,$pagenavname分页模板接收变量
   function get_page($table,$where='',$pageurl='',$limit=20,$field='*',$rowsname='rows'){
      if(!$this->checkTableName($table)){
         return false;
      }
      $rows=array();
      $page=$_GET['page']<1?1:$_GET['page'];
      $ststrsql=($page-1)*$limit;
      $num=$this->DB_select_num($table,$where);
      if($num>$limit){
         $pages=ceil($num/$limit);
            $pagenav=Page($page,$num,$limit,$pageurl,$notpl=false,null);
      }
      $rows=$this->DB_select_all($table,$where.' limit '.$ststrsql.','.$limit,$field);
      return array('total'=>$num,'pagenav'=>$pagenav,$rowsname=>$rows);
   }
   function fetch_assoc(){
       return $this->db->fetch_assoc();
   }
   function checkTableName($table){
       if (preg_match('/^[_a-z]{2,30}$/i',$table)){
        return true;
       }else {
        return false;
       }
   }
   /*
   *   $data      :   where条件, 字符串value 默认==:$where[id] = '1';
   *                        数组  value:$where['id'] = array('>','1','or/and');根据传入的or and 异或查询 默认AND
   *   $key      :   PHPYUNBTW PHPYUNBTWEND 使用()组合优先级组合条件 如 (id>0 AND id<1)
   *   $whereNew   :   拼接后的SQL条件,默认以AND 连接
    */
   function checkWhere($where){
      $whereNew   =   '';
      if(!empty($where) && is_array($where)){
          $limit  =  '';
          if(!empty($where['limit'])){
              if(is_array($where['limit']))
            {
               $limit   =   ' LIMIT '.(int)$where['limit'][0].','.(int)$where['limit'][1];
            }else{
               $limit   =   ' LIMIT '.(int)$where['limit'];
            }
            unset($where['limit']);
         }
         $orderby  =  '';
         if(!empty($where['orderby'])){
            if(is_array($where['orderby']))
            {
               $orderby   =   ' ORDER BY ';
               foreach($where['orderby'] as $key=>$value){
    //调用分页,$table表名,$where条件,$pageurl分页链接,$limit条数,$rowsname模板接收变量,$pagenavname分页模板接收变量
    function get_page($table, $where = '', $pageurl = '', $limit = 20, $field = '*', $rowsname = 'rows') {
        if (!$this->checkTableName($table)) {
            
                  if($key>0)
                  {
                     $orderby   .=   ',';
                  }
                  $orders       =   @explode(',',$value);
                  $orderby   .=   $orders[0].' ';
                  $orderby   .=   strtoupper(trim($orders[1])) == 'ASC' ? 'ASC':'DESC';
                  $whereFiled[]   =   $orders[0];
               }
            } elseif (stripos($where['orderby'], 'CASE WHEN') !== false)
            {
                //CASE THEN END 条件排序
                $orderby        =   ' ORDER BY '.$where['orderby'];
                $whereFiled[]   =   'CASE';
            }else{
               $orders       =   @explode(',',$where['orderby']);
               $orderby    =   ' ORDER BY '.$orders[0].' ';
               $orderby   .=   strtoupper(trim($orders[1])) == 'ASC' ? 'ASC':'DESC';
               $whereFiled[]   =   $orders[0];
            }
            unset($where['orderby']);
         }
         if(!empty($where['orderbyfield'])){
            if(is_array($where['orderbyfield']) && count($where['orderbyfield']) == 2){
               $orderby   =   ' ORDER BY field('.$where['orderbyfield'][0].','.$where['orderbyfield'][1].')';
               $whereFiled[]   =   $where['orderbyfield'][0];
            }
            unset($where['orderbyfield']);
         }
         $groupby  =  $having =   '';
         if(!empty($where['groupby'])){
            return FALSE;
        }
        $rows = array();
        $page = $_GET['page'] < 1 ? 1 : $_GET['page'];
        $ststrsql = ($page - 1) * $limit;
        $num = $this->DB_select_num($table, $where);
        if ($num > $limit) {
            $pages = ceil($num / $limit);
            $pagenav = Page($page, $num, $limit, $pageurl, $notpl = FALSE, NULL);
        }
        $rows = $this->DB_select_all($table, $where . ' limit ' . $ststrsql . ',' . $limit, $field);
        return array('total' => $num, 'pagenav' => $pagenav, $rowsname => $rows);
    }
    function fetch_assoc() {
        return $this->db->fetch_assoc();
    }
    function checkTableName($table) {
        if (preg_match('/^[_a-z]{2,30}$/i', $table)) {
            return TRUE;
        } else {
            return FALSE;
        }
    }
    /*
    *   $data      :   where条件, 字符串value 默认==:$where[id] = '1';
    *                        数组  value:$where['id'] = array('>','1','or/and');根据传入的or and 异或查询 默认AND
    *   $key      :   PHPYUNBTW PHPYUNBTWEND 使用()组合优先级组合条件 如 (id>0 AND id<1)
    *   $whereNew   :   拼接后的SQL条件,默认以AND 连接
     */
    function checkWhere($where) {
        $whereNew = '';
        if (!empty($where) && is_array($where)) {
            $limit = '';
            if (!empty($where['limit'])) {
                
             //   GROUP BY    和   HAVING 联合查询
             //   $key    :   having ;    $value  :   array();
             //   例如            :     array('having' => array('distance' => array('<', 20, ''), 'x' => array('<>', 0, 'AND')))
             if (!empty($where['having'])) {
                 $groupby      =   ' GROUP  BY '.$where['groupby'];
               $whereFiled[]   =   $where['groupby'];
                 foreach ($where['having'] as $key => $value){
                     if (is_array($value)) {
                         //   HAVING 多条件查询; $value[2] : 异或查询
                         if($value[2] == 'OR' || $value[2] == 'or'){
                             $btnAndOR    =   ' OR ';
                         }else if($value[2] == 'AND' || $value[2] == 'and'){
                             $btnAndOR    =   ' AND ';
                         }else{
                             $btnAndOR    =   '';
                         }
                         $having  =   $btnAndOR;
                         $having  .=  $this->spilceWhere($key, $value);
                     $whereFiled[]   =   $key;
                     }
                 }
                 $groupby   .=   ' HAVING '.$having;
                 unset($where['having']);
             }else{
                 $groupby   =   ' GROUP  BY '.$where['groupby'];
               $whereFiled[] = $where['groupby'];
             }
            unset($where['groupby']);
         }
         foreach($where as $key=>$value){
             //PHPYUNBTWSTART_A  PHPYUNBTWEND_A  PHPYUNBTWSTART_B  PHPYUNBTWEND_B 这种可以组成多个()
             // PHPYUNBTWSTART_A_DOUBLE、PHPYUNBTWEND_B_DOUBLE 考虑有需要多重括号的方式,增加此种写法
             //考虑到部分需要使用()执行优先级条件查询判断的情况
             if(strpos($key, 'PHPYUNBTWSTART') !== false){
                 if($whereNew!='')
                 {
                     $btwAndOr   =   ($value=='OR' || $value == 'or') ?' OR ':' AND ';
                 }else{
                     $btwAndOr   =   '';
                 }
                 $whereNew .=   $btwAndOr.'(';
                 // 带_DOUBLE为需要一个多的开始括号情况
                 if(strpos($key, '_DOUBLE') !== false){
                     $whereNew .=  '(';
                 }
                 //标识符 用于判断是否是()内首项条件 非首项条件 必须使用 AND/OR 连接
                 $btwStr    =   1;
             }elseif(strpos($key, 'PHPYUNBTWEND') !== false){
                 $whereNew .=   ')';
                 // 带_DOUBLE为需要一个多的结束括号情况
                 if(strpos($key, '_DOUBLE') !== false){
                     $whereNew .=  ')';
                 }
                 //取消标识符
                 $btwStr    =   0;
             }else{
               //where格式不为纯字符串,则按照操作符函数进行处理
               if(!empty($value) && is_array($value))
               {
                  //同一个字段 多项条件组合
                  if(is_array($value[0])){
                     foreach($value as $sonv){
                        if($whereNew!='' && $btwStr != 1)
                        {
                            $whereNew   .=   ($sonv[2] == 'OR' || $sonv[2] == 'or') ? ' OR ' : ' AND ';
                        }
                        //根据value[0] 判断SQL操作符 并进行组合SQL语句
                        $whereNew   .=   $this->spilceWhere($key,$sonv);
                        $whereFiled[] = $key;
                        $btwStr    =   0;
                      }
                  }else{
                     if($whereNew!='' && $btwStr != 1)
                     {
                         $whereNew   .=   (isset($value[2]) && ($value[2] == 'OR' || $value[2] == 'or')) ? ' OR ' : ' AND ';
                     }
                     //根据value[0] 判断SQL操作符 并进行组合SQL语句
                     $whereNew   .=   $this->spilceWhere($key,$value);
                     $whereFiled[] = $key;
                  }
               }else{
                  //首项条件 排除AND连接符
                  if($whereNew!='' && $btwStr != 1)
                  {
                     $whereNew .=' AND ';
                  }
                  //纯字符串格式默认为 = 操作符
                  $whereNew .= "`".$key."`='".$this->db->escape_string($value)."'";
                  $whereFiled[] = $key;
               }
               $btwStr    =   0;
            }
         }
      }
      // 验证字段
      if(!empty($whereFiled)){
         foreach($whereFiled as $value){
            if(!preg_match("/^[a-zA-Z0-9_`()]{1,30}$/",$value)){
               $noFields = 1;
               break;
            }
         }
      }
      if(!isset($noFields)){
         if($whereNew)
         {
            $whereNew   =   ' WHERE '.$whereNew;
         }
         $whereNew   .=   $groupby.$orderby.$limit;
         return $whereNew;
      }else{
          $this->db->show_error();
      }
   }
   function spilceWhere($daraKey,$dataV){
      $Operator = array('=','>','>=','<','<=','<>','in','notin','isnull','notnull','like','findin','between','unixtime','like%','dateformat','in_s','regexp');
      if(in_array($dataV[0],$Operator)){
          switch($dataV[0]){
            case   'notin'      : $sqlString = "`$daraKey` not in (".$this->db->escape_string($dataV[1]).")";
            break;
            case   'in'      : $sqlString = "`$daraKey`  in (".$dataV[1].")";
            break;
            case   'isnull'   : $sqlString = "`$daraKey` is null";
            break;
            case   'notnull'   : $sqlString = "`$daraKey` is not null";
            break;
            case   'like'      : $sqlString = "`$daraKey` LIKE ('%".$this->db->escape_string($dataV[1])."%')";
            break;
            case   'findin'    : $sqlString = "FIND_IN_SET('".$this->db->escape_string($dataV[1])."',`$daraKey`)";
            break;
            case   'between'   : $betweens = explode(',', $dataV[1]);$sqlString = "$daraKey between $betweens[0] AND $betweens[1]";
            break;
            case    'unixtime'  : $sqlString =  "UNIX_TIMESTAMP(`$daraKey`) ".$this->db->escape_string($dataV[1])." '$dataV[2]'";
            break;
            case   'like%'      : $sqlString = "`$daraKey` LIKE ('".$this->db->escape_string($dataV[1])."%')";
            break;
            case   'dateformat': $sqlString = "date_format(`$daraKey`,'".$dataV[1]."')=date_format(now(),'".$this->db->escape_string($dataV[1])."')";
            break;
            // 字符串型的in
            case   'in_s'      : $sqlString = "`$daraKey`  in ('".$dataV[1]."')";
            break;
            // 处理值匹配
            case   'regexp'   : $sqlString = "(`$daraKey` REGEXP '".$dataV[1]."')=0";
            break;
            default            :
                // 传入字段中包含sql函数的,两边不需要加`
                $keystr     =  !preg_match("/[)]/",$daraKey) ? "`$daraKey` " : "$daraKey ";
                $sqlString  =  $keystr.$this->db->escape_string($dataV[0])." '$dataV[1]'";
         }
      }else{
          $this->db->show_error();
      }
      return $sqlString;
   }
   function uc_open(){
      include APP_PATH.'data/api/uc/config.inc.php';
      include APP_PATH.'/api/uc/include/db_mysql.class.php';
      include APP_PATH.'/api/uc/uc_client/client.php';
      return $ucinfo;
   }
                if (is_array($where['limit'])) {
                    $limit = ' LIMIT ' . (int)$where['limit'][0] . ',' . (int)$where['limit'][1];
                } else {
                    $limit = ' LIMIT ' . (int)$where['limit'];
                }
                unset($where['limit']);
            }
            $orderby = '';
            if (!empty($where['orderby'])) {
                if (is_array($where['orderby'])) {
                    $orderby = ' ORDER BY ';
                    foreach ($where['orderby'] as $key => $value) {
                        if ($key > 0) {
                            $orderby .= ',';
                        }
                        $orders = @explode(',', $value);
                        $orderby .= $orders[0] . ' ';
                        $orderby .= strtoupper(trim($orders[1])) == 'ASC' ? 'ASC' : 'DESC';
                        $whereFiled[] = $orders[0];
                    }
                } elseif (stripos($where['orderby'], 'CASE WHEN') !== FALSE) {
                    //CASE THEN END 条件排序
                    $orderby = ' ORDER BY ' . $where['orderby'];
                    $whereFiled[] = 'CASE';
                } else {
                    $orders = @explode(',', $where['orderby']);
                    $orderby = ' ORDER BY ' . $orders[0] . ' ';
                    $orderby .= strtoupper(trim($orders[1])) == 'ASC' ? 'ASC' : 'DESC';
                    $whereFiled[] = $orders[0];
                }
                unset($where['orderby']);
            }
            if (!empty($where['orderbyfield'])) {
                if (is_array($where['orderbyfield']) && count($where['orderbyfield']) == 2) {
                    $orderby = ' ORDER BY field(' . $where['orderbyfield'][0] . ',' . $where['orderbyfield'][1] . ')';
                    $whereFiled[] = $where['orderbyfield'][0];
                }
                unset($where['orderbyfield']);
            }
            $groupby = $having = '';
            if (!empty($where['groupby'])) {
                //   GROUP BY    和   HAVING 联合查询
                //   $key    :   having ;    $value  :   array();
                //   例如            :     array('having' => array('distance' => array('<', 20, ''), 'x' => array('<>', 0, 'AND')))
                if (!empty($where['having'])) {
                    $groupby = ' GROUP  BY ' . $where['groupby'];
                    $whereFiled[] = $where['groupby'];
                    foreach ($where['having'] as $key => $value) {
                        if (is_array($value)) {
                            //   HAVING 多条件查询; $value[2] : 异或查询
                            if ($value[2] == 'OR' || $value[2] == 'or') {
                                $btnAndOR = ' OR ';
                            } else if ($value[2] == 'AND' || $value[2] == 'and') {
                                $btnAndOR = ' AND ';
                            } else {
                                $btnAndOR = '';
                            }
                            $having = $btnAndOR;
                            $having .= $this->spilceWhere($key, $value);
                            $whereFiled[] = $key;
                        }
                    }
                    $groupby .= ' HAVING ' . $having;
                    unset($where['having']);
                } else {
                    $groupby = ' GROUP  BY ' . $where['groupby'];
                    $whereFiled[] = $where['groupby'];
                }
                unset($where['groupby']);
            }
            foreach ($where as $key => $value) {
                //PHPYUNBTWSTART_A  PHPYUNBTWEND_A  PHPYUNBTWSTART_B  PHPYUNBTWEND_B 这种可以组成多个()
                // PHPYUNBTWSTART_A_DOUBLE、PHPYUNBTWEND_B_DOUBLE 考虑有需要多重括号的方式,增加此种写法
                //考虑到部分需要使用()执行优先级条件查询判断的情况
                if (strpos($key, 'PHPYUNBTWSTART') !== FALSE) {
                    if ($whereNew != '') {
                        $btwAndOr = ($value == 'OR' || $value == 'or') ? ' OR ' : ' AND ';
                    } else {
                        $btwAndOr = '';
                    }
                    $whereNew .= $btwAndOr . '(';
                    // 带_DOUBLE为需要一个多的开始括号情况
                    if (strpos($key, '_DOUBLE') !== FALSE) {
                        $whereNew .= '(';
                    }
                    //标识符 用于判断是否是()内首项条件 非首项条件 必须使用 AND/OR 连接
                    $btwStr = 1;
                } elseif (strpos($key, 'PHPYUNBTWEND') !== FALSE) {
                    $whereNew .= ')';
                    // 带_DOUBLE为需要一个多的结束括号情况
                    if (strpos($key, '_DOUBLE') !== FALSE) {
                        $whereNew .= ')';
                    }
                    //取消标识符
                    $btwStr = 0;
                } else {
                    //where格式不为纯字符串,则按照操作符函数进行处理
                    if (!empty($value) && is_array($value)) {
                        //同一个字段 多项条件组合
                        if (is_array($value[0])) {
                            foreach ($value as $sonv) {
                                if ($whereNew != '' && $btwStr != 1) {
                                    $whereNew .= ($sonv[2] == 'OR' || $sonv[2] == 'or') ? ' OR ' : ' AND ';
                                }
                                //根据value[0] 判断SQL操作符 并进行组合SQL语句
                                $whereNew .= $this->spilceWhere($key, $sonv);
                                $whereFiled[] = $key;
                                $btwStr = 0;
                            }
                        } else {
                            if ($whereNew != '' && $btwStr != 1) {
                                $whereNew .= (isset($value[2]) && ($value[2] == 'OR' || $value[2] == 'or')) ? ' OR ' : ' AND ';
                            }
                            //根据value[0] 判断SQL操作符 并进行组合SQL语句
                            $whereNew .= $this->spilceWhere($key, $value);
                            $whereFiled[] = $key;
                        }
                    } else {
                        //首项条件 排除AND连接符
                        if ($whereNew != '' && $btwStr != 1) {
                            $whereNew .= ' AND ';
                        }
                        //纯字符串格式默认为 = 操作符
                        $whereNew .= "`" . $key . "`='" . $this->db->escape_string($value) . "'";
                        $whereFiled[] = $key;
                    }
                    $btwStr = 0;
                }
            }
        }
        // 验证字段
        if (!empty($whereFiled)) {
            foreach ($whereFiled as $value) {
                if (!preg_match("/^[a-zA-Z0-9_`()]{1,30}$/", $value)) {
                    $noFields = 1;
                    break;
                }
            }
        }
        if (!isset($noFields)) {
            if ($whereNew) {
                $whereNew = ' WHERE ' . $whereNew;
            }
            $whereNew .= $groupby . $orderby . $limit;
            return $whereNew;
        } else {
            $this->db->show_error();
        }
    }
    function spilceWhere($daraKey, $dataV) {
        $Operator = array('=', '>', '>=', '<', '<=', '<>', 'in', 'notin', 'isnull', 'notnull', 'like', 'findin', 'between', 'unixtime', 'like%', 'dateformat', 'in_s', 'regexp');
        if (in_array($dataV[0], $Operator)) {
            switch ($dataV[0]) {
                case    'notin'        :
                    $sqlString = "`$daraKey` not in (" . $this->db->escape_string($dataV[1]) . ")";
                    break;
                case    'in'        :
                    $sqlString = "`$daraKey`  in (" . $dataV[1] . ")";
                    break;
                case    'isnull'    :
                    $sqlString = "`$daraKey` is null";
                    break;
                case    'notnull'    :
                    $sqlString = "`$daraKey` is not null";
                    break;
                case    'like'        :
                    $sqlString = "`$daraKey` LIKE ('%" . $this->db->escape_string($dataV[1]) . "%')";
                    break;
                case    'findin'    :
                    $sqlString = "FIND_IN_SET('" . $this->db->escape_string($dataV[1]) . "',`$daraKey`)";
                    break;
                case    'between'    :
                    $betweens = explode(',', $dataV[1]);
                    $sqlString = "$daraKey between $betweens[0] AND $betweens[1]";
                    break;
                case    'unixtime'  :
                    $sqlString = "UNIX_TIMESTAMP(`$daraKey`) " . $this->db->escape_string($dataV[1]) . " '$dataV[2]'";
                    break;
                case    'like%'        :
                    $sqlString = "`$daraKey` LIKE ('" . $this->db->escape_string($dataV[1]) . "%')";
                    break;
                case    'dateformat':
                    $sqlString = "date_format(`$daraKey`,'" . $dataV[1] . "')=date_format(now(),'" . $this->db->escape_string($dataV[1]) . "')";
                    break;
                // 字符串型的in
                case    'in_s'        :
                    $sqlString = "`$daraKey`  in ('" . $dataV[1] . "')";
                    break;
                // 处理值匹配
                case    'regexp'    :
                    $sqlString = "(`$daraKey` REGEXP '" . $dataV[1] . "')=0";
                    break;
                default                :
                    // 传入字段中包含sql函数的,两边不需要加`
                    $keystr = !preg_match("/[)]/", $daraKey) ? "`$daraKey` " : "$daraKey ";
                    $sqlString = $keystr . $this->db->escape_string($dataV[0]) . " '$dataV[1]'";
            }
        } else {
            $this->db->show_error();
        }
        return $sqlString;
    }
    function uc_open() {
        include APP_PATH . 'data/api/uc/config.inc.php';
        include APP_PATH . '/api/uc/include/db_mysql.class.php';
        include APP_PATH . '/api/uc/uc_client/client.php';
        return $ucinfo;
    }
}
?>