PHP之封装MySQL类

作者: cws | 来源:发表于2016-07-14 22:17 被阅读561次

    config.inc.php内容如下

    <?php
    return array(
        'DB_HOST' => '192.168.188.134',
        'DB_NAME' => 'scoreboard', 
        'DB_USER' => 'score',
        'DB_PASS' => '123456',
        'DB_CHARSET' => 'utf8',
        'IS_LOG' => 1,//开启日志
        'LOGFILEPATH' => '../log.txt'//日志路径
    );
    /*
        $database = require('./config.php');
        echo $database['DB_TYPE'];   //输出'DB_TYPE'
    */
    
    ?>
    

    表设计如下

    create database scoreboard;
    use scoreboard;
    
    create table users(
    id int not null auto_increment primary key,
    gid int not null,                --组id
    username varchar(20) not null,
    password varchar(32) not null,
    sex varchar(2) not null,
    totalscore int  --个人总积分
    );
    
    create table share(
    id int not null auto_increment primary key,
    uid int not null,
    content varchar(1024) not null,  --分享内容
    comment varchar(1024) not null,   --点评
    date varchar(15) not null       --分享日期
    );
    
    create table score(
    id int not null auto_increment primary key,
    uid int not null,               --用户id
    score int not null,             --用户单次积分
    );
    
    grant all privileges on scoreboard.* to 'score'@'%' identified by '123456';
    flush privileges;
    

    封装类如下

    <?php
    
    class mysql {
        private $logfilepath;
        private $is_log;
        private $hlog;
        private $conn;
    
        //构造函数
        public function __construct()
        {
            $config = include_once(dirname(__FILE__)."/../config/config.inc.php");
            $this->is_log = $config['IS_LOG'];
            $this->logfilepath = $config['LOGFILEPATH'];
    
            if ($this->is_log){
                $handle = fopen($this->logfilepath,"a+");
                $this->hlog = $handle;
            }
    
            $this->conn = $this->connect($config['DB_HOST'],$config['DB_USER'],$config['DB_PASS'],$config['DB_NAME'],$config['DB_CHARSET']);
        }
    
        //连接数据库
        public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbcharset)
        {
            $this->conn = @mysql_connect($dbhost,$dbuser,$dbpass);
            if (!$this->conn) {
                $msg = "连接数据库失败:".mysql_error();
                $this->write_log($msg);
                die($msg);
            } else {
                if (!@mysql_select_db($dbname)) {
                    $msg = "连接数据库成功,但选择数据库失败:".mysql_error();
                    $this->write_log($msg);
                    die($msg);
                } else {
                    $msg = "连接数据库成功,且选择数据库成功";
                    $this->write_log($msg);
                }
            }
    
            @mysql_query("set names ".$dbcharset);
    
        }
    
        //执行语句
        public function query($sql){
            
            $result = @mysql_query($sql);
    
            if (!$result) {
                $this->write_log('mysql_query error:'.mysql_error());
            } else {
                $this->write_log('执行语句:'.$sql.' 且执行成功');
            }
            return $result;
        }
    
        //查询一条数据
        public function select_one($tab,$column = "*",$condition = '',$debug=False)   //查询函数
        {
            $condition = $condition ? ' where ' . $condition : NULL;
            $sql = "select $column from $tab $condition ";
            if ($debug) {
                echo '将执行语句:'.$sql.'<br />';
            } else {
                $result = $this->query($sql);
                $row = @mysql_fetch_assoc($result);
                return $row;
            }
        }
    
        //查询多条数据
        public function select_more($tab,$column = "*",$condition = '',$debug=False)   //查询函数
        {
            $condition = $condition ? ' where ' . $condition : NULL;
            $sql = "select $column from $tab $condition";
            if ($debug) {
                echo '将执行语句:'.$sql;
            } else {
                $result = $this->query($sql);
                $i = 0;
                $rows = array();
                while ($row = @mysql_fetch_assoc($result)) {
                    $rows[$i] = $row;
                    // print_r($rows[$i]);
                    $i++; 
                }
                return $rows;
            }
        }
    
        //返回结果集
        public function echo_result($tab,$column = "*",$condition = '',$debug=False)   //查询函数
        {
            $condition = $condition ? ' where ' . $condition : NULL;
            $sql = "select $column from $tab $condition ";
            if ($debug) {
                echo '将执行语句:'.$sql.'<br />';
            } else {
                return $this->query($sql);
            }
        }
    
        //插入数据
        public function insert($tab,$arr,$debug=False)
        {
            $value = '';
            $column = '';
            foreach ($arr as $k => $v) {
                $column .= ",{$k}";
                $value .= ",'{$v}'";
            }
            $column = substr($column, 1);
            $value = substr($value, 1);
    
            $sql = "insert into $tab($column) values($value)";
            if ($debug) {
                echo '将执行语句:'.$sql;
            } else {
                $this->query($sql);
                $num = $this->affected_num();
                $this->write_log("受影响行数:".$num);
                return $num;    //返回受影响行数
            }
        }
    
        //获取最后插入的id
        public function insert_id() {
            $id = mysql_insert_id($this->link_id);
            $this->write_log('最后插入的id为:'.$id);
            return $id;
        }
    
        //更新数据
        public function update($tab,$arr,$condition = '',$debug=False)
        {
            if (!$condition) {
                die("error".mysql_error());
            } else {
                $condition = 'where ' . $condition;
            }
            
            $value = '';
            foreach ($arr as $k => $v) {
                $value .= "{$k}='{$v}',";
            }
            $value = substr($value,0,-1);
    
            $sql = "update $tab set $value $condition";
            if ($debug) {
                echo '将执行语句:'.$sql;
            } else {
                $this->query($sql);
                $num = $this->affected_num();
                $this->write_log("受影响行数:".$num);
    
                return $num;            
            }
        }
    
        //删除数据
        public function delete($tab,$condition='',$debug=False)
        {
            $condition = $condition ? ' where ' . $condition : NULL;
            $sql = "delete from $tab $condition";
            if ($debug) {
                echo '将执行语句:'.$sql;
            } else {
                $this->query($sql);
                $num = $this->affected_num();
                $this->write_log("受影响行数:".$num);
                return $num;    //返回受影响行数
            }
        }
    
        //返回受影响行数
        public function affected_num()
        {
            $num = @mysql_affected_rows();
            return $num;
        }
    
        //写入日志
        public function write_log($msg='')
        {
            if ($this->is_log){
                $text = date("Y-m-d H:i:s")." ".$msg."\r\n";
                fwrite($this->hlog,$text);
            }
        }
    
        //关闭数据库连接
        public function close()
        {  
            mysql_close($this->conn);
        }
    
        //析构函数
        public function __destruct()
        {
            if($this->is_log){
                fclose($this->hlog);
            }
        }
    }
    
    
        //$db = new mysql();
        
        // //select_one($tab,$column = "*",$condition = '')
        // $rows = $db->select_more('share','*');
        // print_r($rows[0]);
        // print_r($rows[1]);
    
    
        // //insert($tab,$arr)
        // $arr = array();
        // $arr['uid'] = '3';
        // $arr['content'] = 'xss';
        // $arr['comment'] = 'very good';
        // $arr['date'] = '1464082630';
        // $db->insert('share',$arr);
    
    
        // //update($tab,$arr,$condition = '')
        // $arr = array();
        // $arr['content'] = 'xssxssxssxssxss';
        // $arr['comment'] = 'goodgoodgoodgood';
        // $condition = 'id > 5';
        // $db->update('share',$arr,$condition);
    
    
        //$db->delete("share","id between 10 and 15");
    
    
        //$db->close();
    
    ?>
    

    相关文章

      网友评论

        本文标题:PHP之封装MySQL类

        本文链接:https://www.haomeiwen.com/subject/ihfyjttx.html