仅支持基本增删改查的学生自制php操作mysql的工具类 DB.class.php (学生笔记)

<?php

class DB{
    //主机地址
    var $host;
    //用户名
    var $username;
    //密码
    var $password;
    //数据库名
    var $dbname;
    //字符集
    var $charset;
    //数据库连接对象,主要用在mysql_query($sql,$this->con);
    private $con;
    //外界获取的mysqlDB类操作对象
    public static $dao;
    //获得mysqlDB类对象(单例)
    public static function getInstance($config){
        if(!isset(self::$dao)){
            self::$dao = new self($config);
        }
        return self::$dao;
    } 
    //private禁止外部new,减少new带来的开销,并设置默认的配置。
    private function __construct($config){
        $this->host = isset($config['host'])?$config['host']:'localhost';
        $this->port = isset($config['port'])?$config['port']:'3306';
        $this->username = isset($config['username'])?$config['username']:'root';
        $this->password = isset($config['password'])?$config['password']:'root';
        $this->dbname = isset($config['dbname'])?$config['dbname']:'test';
        $this->charset = isset($config['charset'])?$config['charset']:'utf8';
        //连接数据库
        $this->con = $this->connect();
        //设置数据库名,默认为test
        $this->useDb($this->dbname);
        //设置字符集,默认为utf8。 
        $this->setCharset($this->charset);

    }
    //禁止外部克隆
    private function __clone(){

    }
    //连接不成功在这个分段找。
    //////////////////////////////////////////////////////
    //连接数据库
    public function connect(){
         $con = 
        mysql_connect("$this->host:$this->port","$this->username","$this->password") or die("连接数据库失败");
        return $con;
    }
    //1.执行增、删、改sql语句 
    public function exec($sql){
        $res = mysql_query($sql,$this->con);
        if($res){
             // echo "<br/>sql语句:".$sql."<br>";
             // var_dump($res);
             return true;
             
            //要是增删改有问题可以在这里输出sql调试。
        }else{
            echo "<br/>sql语句:".$sql;
            echo "<br/出错信息>:".mysql_error();
            echo "<br/出错代码>:".mysql_errno();
            exit;
        }
    }
    //额外设置字符集
    public function setCharset($charset){
        $sql = "set names '$charset'";
        $this->exec($sql) or die("set");
        //die();
    }
    //额外设置数据库
    public function useDb($dbname){
        $sql = "use $dbname";
        $this->exec($sql) or die("use");//or die()函数前面需返回对应的true或false;
    }
    ////////////////////////////////////////////////////////
    //查找出错在这个部分找。
    //4.将查到的结果集转为单个数据,这里是索引数组的第一个字段。
    public function getOne($sql){
        $rec = mysql_query($sql,$this->con);
        $res = mysql_fetch_row($rec);
        if($res){
            return $res[0];
        }else{
            return false;
        }
    }
    //可能修改的函数全部放在上面,以便查找。下方函数基本不会修改。
    //编号1~4是高频率使用的函数。
    //2.获取一行数据(一维)
    public function getRow($sql){
        $rec = mysql_query($sql,$this->con);
        $res = mysql_fetch_assoc($rec);
        if($res){
            return $res;
        }else{
            return false;
        }
    }
    //3.获取所有数据(二维)
    public function getAll($sql){
        $rec = mysql_query($sql,$this->con);
        $arr = array();//定义 一个数组
        while($res = mysql_fetch_assoc($rec)){
            $arr[] = $res;
        }
        if($arr){
            return $arr;
        }else{
            return false;
        }
    }

}

$dao = DB::getInstance(null);
?>


<?php

include_once("DB.class.php");

$sql = "select * from goods where id = 1";
//.获取一行数据(一维)

$res = $dao->getRow($sql); var_dump($res);

//以上的getRow函数只是举例,具体如何使用这个工具,首先要在php文件中include这个工具类,即include_once("DB.class.php");

//1.要看sql语句查回的数据是一维的,还是二维的,或者单个数据。
//对应的函数是getROW,getAll,getOne。
//2.增删改统一用exec。
//3.数据库的连接配置在构造构造函数中修改。


?>

 注意事项:

1.文件DB.class.php建好后。

2.在需要操作数据库接的文件中include这个文件,上面有示例。

3.使用之前必须把数据库名改成当前项目数据库名。这个是最重要的,也是最容易忘记的。