A mysqli class with cache data function_PHP tutorial

WBOY
Release: 2016-07-13 17:05:55
Original
954 people have browsed it

Let’s share a mysqli class with cache data function. Students in need can take a look.

The code is as follows Copy code

/**
* Mysqli class
* *
* @author ruins
* @version v1.0 2009-08-18

    */  
    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, $dbuser, $dbpass, $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, 1);  
            return $this->get_cache($sql, 'getRow');  
        }  
 
        public function getAll($sql, $limit = null, $fetch_mode = MYSQLI_ASSOC) {  
            $this->query($sql, $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, $limit = null, $fetch_mode = MYSQLI_ASSOC) {  
            return $this->getAll($sql);  
        }  
 
        public function cache_all($sql, $limit = null) {  
            $sql    = $this->getQuerySql($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(),'
';
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/630729.htmlTechArticleThe following is a mysqli class with cache data function. Students in need can take a look. The code is as follows Copy code ?php /** * Mysqli class * * @author ruins * @version v1.0 2009-08-18...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!