PHP简易数据库操作Model类实现教程

洛溪
洛溪
发布时间:2026-10-13| 4人浏览过
原创

通过封装Mysqli扩展,构建基础的PHP数据库Model类。该类支持配置连接参数,并集成查找、插入、修改和删除等核心数据操作方法,旨在简化传统的数据库交互流程。

数据库连接配置

首先需要定义数据库连接的基本参数,包括主机地址、用户名、密码及数据库名称。建议将配置信息独立存放在配置文件中,以便维护。

第1步:创建config.php文件

目的:集中管理数据库连接凭证。
内容示例:

<?php
define("HOSTNAME", "127.0.0.1");
define("USERNAME", "root");
define("PASSWORD", ""); // 请设置为实际密码
define("DATANAME", "class");
?>

Model类核心实现

基于Mysqli面向对象接口,定义Model类。该类在实例化时自动建立连接,并在销毁时释放资源。主要提供四个静态风格的方法来处理表数据。

第2步:编写Model类代码

入口:require引入config.php后实例化。
动作:定义类结构,实现构造函数与析构函数。

<?php
require_once "./config.php";

class Model {
    private $link;

    // 构造函数:初始化连接与字符集
    public function __construct() {
        $this->link = mysqli_connect(HOSTNAME, USERNAME, PASSWORD, DATANAME) 
            or die("数据库连接失败");
        mysqli_set_charset($this->link, "utf8mb4"); // 推荐使用utf8mb4支持完整Unicode
    }

    // 查找数据
    public function find($table = "", $key = "", $value = "") {
        if (!$key || !$value) {
            $sql = "SELECT * FROM `{$table}`";
        } else {
            // 注意:实际生产环境需对$key和$value进行过滤或预处理防注入
            $sql = "SELECT * FROM `{$table}` WHERE `{$key}` = '{$value}'";
        }
        $res = mysqli_query($this->link, $sql);
        $arr = mysqli_fetch_all($res, MYSQLI_ASSOC);
        mysqli_free_result($res);
        return $arr;
    }

    // 插入数据
    public function ins($table = "", $zd = "name,score", $value = "") {
        $arr = explode(",", $value);
        $str = implode("','", $arr); // 更简洁的拼接方式
        $str = "'{$str}'";
        $sql = "INSERT INTO `{$table}` ({$zd}) VALUES ({$str})";
        $res = mysqli_query($this->link, $sql);
        return mysqli_insert_id($this->link);
    }

    // 更新数据
    public function upd($table = "", $key = "", $value = "", $key2 = "", $value2 = "") {
        $sql = "UPDATE `{$table}` SET `{$key}` = '{$value}' WHERE `{$key2}` = '{$value2}'";
        $res = mysqli_query($this->link, $sql);
        return mysqli_affected_rows($this->link);
    }

    // 删除数据
    public function del($table = "", $key = "", $value = "") {
        $sql = "DELETE FROM `{$table}` WHERE `{$key}` = '{$value}'";
        $res = mysqli_query($this->link, $sql);
        return mysqli_affected_rows($this->link);
    }

    // 析构函数:关闭连接
    public function __destruct() {
        if (isset($this->link)) {
            mysqli_close($this->link);
        }
    }
}

第3步:调用演示

重要参数:确保传入的字段名和数据类型符合表结构。
完成状态:返回影响行数或新插入ID。

$m = new Model();

// 插入一条测试记录(假设stu表存在)
$lastId = $m->ins("stu", "name", "zhu");
echo "New ID: " . $lastId;

// 查询所有记录
$data = $m->find("stu");
var_dump($data);

// 根据条件查找
$user = $m->find("stu", "id", 1);
var_dump($user);

// 更新操作
$updated = $m->upd("stu", "score", "100", "id", 1);
echo "Updated rows: " . $updated;

// 删除操作
$deleted = $m->del("stu", "name", "test_user");
echo "Deleted rows: " . $deleted;
?>

注意事项与安全提示

此示例主要用于理解ORM基础逻辑。在实际生产环境中:
1. SQL注入风险:上述代码直接使用变量拼接SQL字符串,极易受SQL注入攻击。务必使用预处理语句(Prepared Statements)。
2. 异常处理:应捕获mysqli_query的错误信息并进行日志记录,而非直接die输出。
3. 字符集:推荐使用utf8mb4以兼容emoji等特殊字符。

以上就是PHP简易数据库操作Model类实现的详细内容,更多关于PHP数据库模型封装的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。