PHP之封装MySQL类

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类的详细内容,更多关于PHP之封装MySQL类的资料请关注OX520其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容