/** * 清空所有SESSION * * @return boolean */ public function cleanup() { switch ($this->_type) { case 'mem': return $this->_mem->flush(); case 'db': case 'mdb': return $this->_db->truncate($this->_opt); case 'file': return self::kill_sfile($this->_path, true); case 'dir': $dir = 'abcdefghijklmnopqrstuvwxyz'; $len = strlen($dir); for ($i = 0; $i < $len; ++$i) { wcore_fso::rm_dir($dir[$i]); } default: return true; } }
/** * 获取记录存入到数组中并返回 * * @param string $sql SQL语句 * @param bool $rsql 是否返回分布SQL语句 * @return bool|mixed|string 有数据则返回数据数组,无则返回false */ public function &get_value($sql, $rsql = false) { $false = false; if (empty($sql)) { return $false; } $sql = str_replace(';', '', $sql); $this->page_tip = $this->lang['not_data']; //未找到内容时显示的提示说明 /** * 截取FROM后的条件SQL语句 */ $osql = $sql; $order_pos = stripos($osql, ' ORDER'); if ($order_pos) { $osql = substr($osql, 0, $order_pos); } if ($this->amount == -1) { preg_match('/(\\t| |\\n|\\r)?FROM (.+?)$/is', $osql, $from); $this->_amount('SELECT COUNT(*) AS CNUM' . $from[0]); } /** * 计算能分多少页 */ $this->how_cleft(); if ($this->now_page <= 0) { $this->now_page = 1; } $now_page = $this->now_page - 1; $snum = $now_page * $this->page_size; /** * 判断指定分页数是否大于实际分页数 */ if ($this->now_page > $this->how_cleft) { return $false; } $page_size = $this->page_size; /** * 判断数据库操作类型 */ if (get_class($this->_db) == 'wcore_mssql') { $sql = preg_replace('/SELECT /i', "SELECT TOP {$this->enum} ", $sql); } else { if (get_class($this->_db) == 'wcore_oci') { $enum = $snum + $page_size; $sql = "SELECT * FROM (SELECT PTPAGE.*, ROWNUM AS PTRNUM FROM ({$sql}) PTPAGE WHERE ROWNUM <= {$enum}) WHERE PTRNUM > {$snum}"; } else { $sql = "{$sql} LIMIT {$snum}, {$page_size};"; } } $this->snum = $snum <= 0 ? 1 : $snum + 1; //开始记录编号 $this->enum = $snum + $page_size - 1; //终止记录编号 /** * 判断最终显示的记录是否真的大于总记录 */ if ($this->enum > $this->amount) { $this->enum = $this->amount; } /** * 判断是否仅返回分页SQL,若为假则执行SQL并返回所有数据 */ if ($rsql) { return $sql; } $result = $this->_db->fetch_all($sql); return $result; //返回所有数据 }