Example #1
0
 /**
  *基于MySql的底层查询封装<br/>
  * @param string $sql 要执行查询的SQL语句参数请用"?"代替
  * @param array $pam 数字下标的数组,数组项依次替换SQL中的"?"参数
  */
 public function base_query($sql, $pam = null)
 {
     if (is_array($sql)) {
         return $this->base_query($sql[0], $sql[1]);
     } else {
         if (!isset($pam)) {
             //DB自动切换
             if (self::$is_main_sub) {
                 //如果是主从模式
                 if (self::$is_cud && self::$current_db !== null) {
                     //如过是CUD操作
                     self::get_db(null);
                 } elseif (!self::$is_cud && self::$current_db === null) {
                     self::get_db(true);
                 }
             }
             if (Conf::$need_db_log) {
                 //开发模式下记录db日志
                 file_put_contents(YYUC_FRAME_PATH . '/log/db/' . date('Y_m_d_H', time()) . '.log', date('i:s', time()) . ',' . self::$current_db . ': ' . $sql . "\n", FILE_APPEND);
             }
             //调试日志
             if (Conf::$need_debug_log) {
                 Debug::log_sql_begin(self::$current_db . ':' . $sql);
             }
             //数据验证的执行
             if (self::$dbdes !== null) {
                 self::$dbdes->db = $this;
                 DBDes::init_by_sql($sql);
                 if (self::$dbdes->operate != 'R') {
                     Cache::set('YYUC_TABLE_TIME' . self::$dbdes->real_table, time());
                 }
                 if (is_callable('db_validations')) {
                     db_validations(clone self::$dbdes);
                 }
                 self::$dbdes = null;
             }
             $this->statement = null;
             $this->statement = mssql_query(iconv("utf-8", "gbk", $sql), $this->conn);
             if (Conf::$need_debug_log) {
                 Debug::log_sql_end();
             }
             if (!$this->statement) {
                 Log::error("执行出错:" . $sql);
             }
             return $this->statement;
         } else {
             if (is_string($pam)) {
                 //参数为字符串类型
                 $sql = str_replace('@yYUc_SqL@', "'" . str_replace("'", "''", $pam) . "'", $sql);
             } else {
                 if (is_array($pam)) {
                     //单纯数组
                     $sqlss = explode('@yYUc_SqL@', $sql);
                     $sqllen = count($pam);
                     $sql = '';
                     for ($i = 0; $i < $sqllen; $i++) {
                         if ($pam[$i] === null) {
                             $sql .= $sqlss[$i] . "null";
                         } elseif (strpos($pam[$i], '@yYUc_RaW@') === 0) {
                             $sql .= $sqlss[$i] . substr($pam[$i], 10);
                         } else {
                             $sql .= $sqlss[$i] . "'" . str_replace("'", "''", $pam[$i]) . "'";
                         }
                     }
                     $sql .= $sqlss[$sqllen];
                 }
             }
             return $this->base_query($sql);
         }
     }
 }
Example #2
0
 /**
  * 查询是否含有符合条件的数据<br/>
  * 如果$condition为数组则根据数组条件返回符合结果的列表<br/>
  * 如果$condition是字串则必须是 where语句之后的字串,亦可通过?和$pam数组组合成SQL语句<br/>
  * 如果不传入条件则根据where方法 的预设参数查询,如果where未被调用过则列出所有<br/>
  * @param miexd $condition 条件字符串或条件数组
  * @param miexd $pam 参数数组
  * @return boolean
  */
 public function has($condition = null, $pam = null)
 {
     if ($condition === null) {
         $sql = $this->YYUCSYS_db->com_sql($this->YYUCSYS_real_tablename, $this->YYUCSYS_condition, null, null, null, "1", $this->YYUCSYS_pam);
     } else {
         $sql = $this->YYUCSYS_db->com_sql($this->YYUCSYS_real_tablename, $condition, null, null, null, "1", $pam);
     }
     DBDes::init_by_model($this, 'R');
     $res = $this->YYUCSYS_db->query($sql);
     return count($res) > 0;
 }