<div class="codetitle"><a style="CURSOR: pointer" data="54458" class="copybut" id="copybut54458" onclick="doCopy('code54458')"> 代码如下:<div class="codebody" id="code54458"> <?php /* Mysqli类 / class db_mysqli { protected $mysqli; protected $sql; protected $rs; protected $query_num = 0; protected $fetch_mode = MYSQLI_ASSOC; protected $cache_dir = './cache/'; protected $cache_time = 1800; public function __construct($dbhost,$dbuser,$dbpass,$dbname) { $this->mysqli = new mysqli($dbhost,$dbname); if(mysqli_connect_errno()) { $this->mysqli = false; echo ''.mysqli_connect_error().''; die(); } else { $this->mysqli->set_charset("utf8"); } } public function destruct() { $this->free(); $this->close(); } protected function free() { @$this->rs->free(); } protected function close() { $this->mysqli->close(); } protected function fetch() { return $this->rs->fetch_array($this->fetch_mode); } protected function getQuerySql($sql,$limit = null) { if (@preg_match("/[0-9]+(,?[0-9]+)?/is",$limit) && !preg_match("/ LIMIT [0-9]+(,?[0-9]+)?$/is",$sql)) { $sql .= " LIMIT " . $limit; } return $sql; } protected function get_cache($sql,$method) { include_once './cache.php';//若框架中使用autoload(),这里可以不用加载文件 $cache = new cache($this->cache_dir,$this->cache_time); $cache_file = md5($sql.$method); $res = $cache->get_cache($cache_file); if(!$res) { $res = $this->$method($sql); $cache->set_cache($cache_file,$res); } return $res; } public function query_num() { return $this->query_num; } public function set_cache_dir($cache_dir) { $this->cache_dir = $cache_dir; } public function set_cache_time($cache_time) { $this->cache_time = $cache_time; } public function query($sql,$limit = null) { $sql = $this->getQuerySql($sql,$limit); $this->sql = $sql; $this->rs = $this->mysqli->query($sql); if (!$this->rs) { echo "".$this->mysqli->error.""; die(); } else { $this->query_num++; return $this->rs; } } public function getOne($sql) { $this->query($sql,1); $this->fetch_mode = MYSQLI_NUM; $row = $this->fetch(); $this->free(); return $row[0]; } public function get_one($sql) { return $this->getOne($sql); } public function cache_one($sql) { $sql = $this->getQuerySql($sql,1); return $this->get_cache($sql,'getOne'); } public function getRow($sql,$fetch_mode = MYSQLI_ASSOC) { $this->query($sql,1); $this->fetch_mode = $fetch_mode; $row = $this->fetch(); $this->free(); return $row; } public function get_row($sql,$fetch_mode = MYSQLI_ASSOC) { return $this->getRow($sql); } public function cache_row($sql) { $sql = $this->getQuerySql($sql,'getRow'); } public function getAll($sql,$limit = null,$limit); $all_rows = array(); $this->fetch_mode = $fetch_mode; while($rows = $this->fetch()) { $all_rows[] = $rows; } $this->free(); return $all_rows; } public function get_all($sql,$fetch_mode = MYSQLI_ASSOC) { return $this->getAll($sql); } public function cache_all($sql,$limit); return $this->get_cache($sql,'getAll'); } public function insert_id() { return $this->mysqli->insert_id(); } public function escape($str) { if(is_array($str)) { foreach($str as $key=>$val) { $str[$key] = $this->escape($val); } } else { $str = addslashes(trim($str)); } return $str; } } //用法 $db = new db_mysqli('localhost','root',111222,'dict'); $db->set_cache_time(10); $db->set_cache_dir('./cache/sql/'); $sql = "select from words order by word_id limit 10,10"; $res1 = $db->get_all($sql); $res2 = $db->cache_all($sql); echo $db->query_num(),' '; ?>
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|