/** *基于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); } } }
/** * 查询是否含有符合条件的数据<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; }