《php面向对象》 第6课:封装DB类 -1

本文详细介绍如何封装一个用于PHP项目中的DB类,实现与MySQL数据库的高效交互。包括数据库连接、字符集设置及基本的CRUD操作。通过具体代码示例,帮助读者理解DB类的构造与使用。

项目开发过程中离不开数据库的操作,非常有必要封装一个DB类。DB类主要实现连接数据库、查询记录、添加记录、修改记录、删除记录等功能。

首先,我们要准备MYSQL数据库,创建一个myschool数据库,创建一个student数据表

--
-- Database: `myschool`
--
CREATE DATABASE IF NOT EXISTS `myschool` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `myschool`;

-- --------------------------------------------------------

--
-- 表的结构 `student`
--

DROP TABLE IF EXISTS `student`;
CREATE TABLE IF NOT EXISTS `student` (
  `no` varchar(11) NOT NULL COMMENT '学号',
  `name` varchar(50) NOT NULL COMMENT '姓名',
  `sex` varchar(2) NOT NULL COMMENT '性别',
  `age` int(11) NOT NULL COMMENT '年龄',
  PRIMARY KEY (`no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表';
COMMIT;

接下来,我们就开始封装DB类。一个完整的DB类非常复杂,我们必须一步步完成。

操作数据库,必须实现数据库的连接和关闭,我们就先实现两个功能,把它们分别写在构造方法和析构方法中。

<?php

/**
 * 数据库操作类,文件名:Db.class.php
 */
class Db
{

    private $conn;//保存数据库连接资源

    //构造方法:主要实现数据库连接,设置编码格式,并把数据库连接对象conn保存到属性中,为其他方法使用
    function __construct($dbname, $usr, $pwd, $host = "127.0.0.1", $port = 3306, $coding = 'utf8')
    {
        //建议使用mysqli,连接mysql数据库
        $conn = mysqli_connect($host, $usr, $pwd, $dbname, $port);
        if (mysqli_connect_errno($conn)) {
            echo "连接数据库失败: " . mysqli_connect_error();
        }
        // 设置数据库连接字符集
        mysqli_set_charset($conn, $coding);
        $this->conn = $conn;
        echo '连接数据库成功';
    }

    //析构方法:不会有任何参数
    function __destruct()
    {
        //关闭数据库连接,放在析构方法中最合适不过了
        mysqli_close($this->conn);
        echo "<br/>断开数据库连接";
    }
}

db类最好写一个单独的文件中,比如 db.class.php中。下面 我们详细介绍一下其中的代码。

private $conn; 这行代码为什么必须要有?为什么是私有的?这两点各位同学一定要弄清楚。

function __construct($dbname, $usr, $pwd, $host = "127.0.0.1", $port = 3306, $coding = 'utf8')这行代码中,有的参数没有赋值,有的参数有赋值,表示什么意思呢?

赋值的参数称为:带默认值参数。我们一定要把带默认值的参数写到其他参数的后面。

带有默认值的参数在调用 时可以不能传参,像下面这样

$db = new Db("myschool",'root',''); 其中myschool 传给了$dbname, root传给了$usr, '' 传给了$pwd, 没有传递的参数则使用原有的默认值,比如:$host 使用127.0.0.1

当然我们也可以给带默认参数传递参数

$db = new Db("myschool",'root','','localhost');

如果传递了第四参数:‘localhost',则会替代原有的默认值127.0.0.1

有几个函数需要各位同学弄清楚,每个函数的参数,返回结果是什么

mysqli_connect_errno()

mysqli_connect_error()

mysqli_set_charset()

接下来,我们再写一个测试文件

<?php
/**
 * 测试文件 test.php
 */
require_once "Db.class.php";

$db = new Db("myschool",'root','');

在浏览器中运行test.php,运行结果:

连接数据库成功
断开数据库连接

 

 有一个问题:析构方法是什么时候执行的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李 书 明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值