From c49b17b9588306c14ad4b30e6a2c4b8644f3233b Mon Sep 17 00:00:00 2001
From: chengkun <chengkun@ishangstudy.com>
Date: Mon, 12 May 2025 17:26:32 +0800
Subject: [PATCH] 提交
---
app/public/action.class.php | 2318 ++++++++++++++++++++++++++++++-----------------------------
1 files changed, 1,178 insertions(+), 1,140 deletions(-)
diff --git a/app/public/action.class.php b/app/public/action.class.php
index 6e65815..4876c36 100644
--- a/app/public/action.class.php
+++ b/app/public/action.class.php
@@ -1,118 +1,110 @@
<?php
-/*
-* $Author :PHPYUN开发团队
-*
-* 官网: http://www.phpyun.com
-*
-* 版权所有 2009-2021 宿迁鑫潮信息技术有限公司,并保留所有权利。
-*
-* 软件声明:未经授权前提下,不得用于商业运营、二次开发以及任何形式的再次发布。
- */
-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 +112,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 +124,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 +136,7 @@
public function __isset($name) {
return isset($this->data[$name]);
}
-
+
/**
* 销毁数据对象的值
* @access public
@@ -154,403 +146,441 @@
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 get_table_fields($tableName) {
+ include(CONFIG_PATH . 'db.config.php');
+ $mysqli = new mysqli($db_config['dbhost'], $db_config['dbuser'], $db_config['dbpass'], $db_config['dbname']);
+ $query = $mysqli->query("SHOW COLUMNS FROM $tableName");
+ $tableFields = array();
+ while ($row = $query->fetch_assoc()) {
+ $tableFields[] = $row['Field'];
+ }
+ return $tableFields;
+ }
+
+
+ function insert_into($table, $data = array()) {
+ $value = array();
+ $this->db->connect();
+ include(PLUS_PATH . 'dbstruct.cache.php');
+ $TableFullName = $this->def . $table;
+ $fields = $this->get_table_fields($TableFullName);
+ if (!$fields) {
+ return FALSE;
+ }
+ if (!is_array($data)) {
+ return FALSE;
+ }
+ foreach ($data as $key => $v) {
+ if (in_array($key, $fields)) {
+ $v = $this->FilterStr($v);
+ $value[] = "`" . $key . "`='" . $this->db->escape_string($v) . "'";
+ }
+ }
+
+ $value = @implode(",", $value);
+ if (!$value) {
+ return FALSE;
+ }
+ 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;
+ $fields = $this->get_table_fields($TableFullName);
+ if (!is_array($data) || !is_array($where)) {
+ return FALSE;
+ }
+ if (!$fields) {
+ return FALSE;
+ }
+
+ // var_dump($$TableFullName);exit();
+// if (is_array($where)) {
+// $fields = array_keys($where);
+// } else {
+// return FALSE;
+// }
+// var_dump($fields);exit();
+
+
+ foreach ($data as $key => $v) {
+ if (!in_array($key, $fields)) {
+ continue;
+ }
+ 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 (!isset($$TableFullName)) {
+ $this->error = '表结构缓存文件不存在';
+ return FALSE;
+ }
+
+ 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 +589,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 +698,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;
+ }
}
+
?>
\ No newline at end of file
--
Gitblit v1.9.0