项目开发过程中离不开数据库的操作,非常有必要封装一个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,运行结果:
连接数据库成功
断开数据库连接
有一个问题:析构方法是什么时候执行的?
本文详细介绍如何封装一个用于PHP项目中的DB类,实现与MySQL数据库的高效交互。包括数据库连接、字符集设置及基本的CRUD操作。通过具体代码示例,帮助读者理解DB类的构造与使用。
512

被折叠的 条评论
为什么被折叠?



