PHP简易数据库操作Model类实现教程
通过封装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数据库模型封装的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









