当前位置:首页>php>PHP+MySQL搭建员工信息管理系统(Centos7版)

PHP+MySQL搭建员工信息管理系统(Centos7版)

  • 2026-07-04 11:13:56
PHP+MySQL搭建员工信息管理系统(Centos7版)

学完 PHP 基础和 MySQL 语法后总觉得知识点很散,想练手又不知道做什么项目?不妨从最经典的「人员信息管理系统」开始 —— 整个项目核心就是数据库的增删查改,逻辑简单不绕弯,但能完整覆盖 Web 开发最基础的流程:前端提交数据、PHP 接收处理、与 MySQL 数据库交互。

这篇文章就带大家用原生 PHP + MySQL 搭一个极简的人员管理系统,没有复杂框架,没有多余封装,每一行代码都对应最基础的语法操作,非常适合用来巩固 MySQL 操作和 PHP 后端开发手感。

如图所示:

现在开始进入环境搭建环节。

文章大纲

一、安装 Apache
二、安装 PHP 7.4(基于 REMI 第三方源)
三、MySQL数据准备
四、PHP代码
五、浏览器访问
六、整体架构分析(扩展)
一、安装 Apache(httpd)
1. 安装 Apache 主程序
yum install -y httpd
命令解释:
通过 yum 包管理器安装 Apache 服务(软件包名为 httpd),-y 参数表示对安装过程中的所有确认提示自动回答 “是”,无需手动交互。
系统变化:
1.自动下载并安装 httpd 主程序及其依赖包;
2.生成 Apache 默认配置文件(路径 /etc/httpd/conf/httpd.conf)、默认站点目录 /var/www/html;
3.注册 systemd 服务单元,后续可通过 systemctl 命令管理服务启停。
2. 启动 Apache 服务
systemctl start httpd.service
systemctl start httpd.service
命令解释:
通过 systemd 启动 httpd 服务,.service 后缀可省略。
系统变化:
1.httpd 进程正式启动,默认监听服务器的 80 端口(HTTP 协议);
2.同局域网内设备可通过 HTTP 协议访问服务器 IP,查看 Apache 默认欢迎页。
3. 防火墙永久开放 80 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令解释:
在 firewalld 防火墙的 public 公共区域中,永久放行 TCP 协议的 80 端口。
--zone=public:指定防火墙规则生效的区域(默认公共区域);
--permanent:规则永久生效,重启防火墙或服务器后不会丢失。
系统变化:
防火墙配置文件中新增 80/tcp 放行规则,但尚未立即生效。
4. 重载防火墙使规则生效
firewall-cmd --reload
命令解释:
热重载 firewalld 防火墙规则,让永久配置的规则立即生效,无需重启防火墙服务。
系统变化:
此前配置的 80 端口放行规则正式生效,外部流量可通过 80 端口访问本机 Apache 服务。
5. 查看当前已放行的端口
firewall-cmd --list-ports
命令解释:
列出当前防火墙已开放的所有端口,用于验证 80 端口是否成功放行。
系统变化:
终端输出当前生效的端口列表,正常执行后会显示 80/tcp。
6. 访问验证地址
http://192.168.1.6:80
显示出Apache主页表示安装成功。
说明与问题提示:
 这是本地服务器的访问地址,但该写法存在协议与端口不匹配问题:
80 端口是 HTTP 协议的默认端口,HTTPS 协议默认对应 443 端口;
使用 https:// 前缀 + 80 端口访问时,会出现文档中 “URL 拼写可能存在错误” 的报错,浏览器无法正常建立连接。

二、安装 PHP 7.4(基于 REMI 第三方源)
1. 安装 EPEL 扩展源(RPM 包方式)
rpm -Uvh https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
命令解释:通过 rpm 命令直接安装 EPEL(企业 Linux 扩展软件包)源的发行包。
-U:升级模式,若软件包未安装则执行安装,已安装则升级;
-v:显示详细安装过程日志;
-h:安装过程中显示进度条。
系统变化:
若安装成功,会在 /etc/yum.repos.d/ 目录下生成 EPEL 源的 repo 配置文件,yum 可从此源下载额外的第三方软件包。
⚠️ 潜在报错(对应反爬拦截问题)
 当前该地址启用了 Anubis 人机验证反爬机制,直接通过 rpm/wget 命令下载会被拦截,无法正常获取 rpm 包,最终导致安装失败。需要先通过浏览器完成验证后手动下载,或更换国内的 EPEL 镜像地址。
2. yum 方式安装 EPEL 源
yum install epel-release
命令解释:
通过 yum 包管理器安装 epel-release 包。
说明:这一步与上一条命令功能完全重复 —— 上一条 rpm 命令已经完成了 epel-release 的安装,此命令属于冗余步骤,执行后只会提示 “软件包已安装,无需重复操作”,不会产生额外系统变化。
3. 安装 REMI 源(RPM 包方式)
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
命令解释:
通过 rpm 命令安装 REMI 第三方软件源(该源提供多版本 PHP 安装包),-i 表示纯安装模式(不执行升级逻辑)。
系统变化:
若安装成功,会在 /etc/yum.repos.d/ 目录下生成 REMI 源的 repo 配置文件。
⚠️ 潜在报错(对应文件类型不支持问题)
 当前该地址返回 “不支持该文件类型” 报错,链接可能已失效、重定向或被访问限制,无法直接下载 rpm 包,会导致此命令执行失败。建议更换 REMI 源的国内镜像地址。
4. 安装 PHP 7.4 核心程序
yum --enablerepo=remi install php74-php
命令解释:临时启用 remi 软件源,安装 PHP 7.4 的核心运行包。
--enablerepo=remi:临时启用指定的 yum 源(仅本次命令生效),REMI 源默认处于禁用状态;
php74-php:REMI 源中 PHP 7.4 的主包命名格式。
系统变化:
PHP 7.4 核心程序被安装到 /opt/remi/php74/ 目录下;
生成对应的 php.ini 配置文件、CLI 执行文件等;
此时系统默认 PATH 路径中无法直接调用 php 命令。
5. 安装 PHP 常用扩展
yum --enablerepo=remi install php74-php php74-php-gd php74-php-xml php74-php-sockets php74-php-session php74-php-snmp php74-php-mysql
命令解释:批量安装 PHP 7.4 的常用功能扩展,各扩展核心作用如下:
php74-php-gd:图像处理扩展,用于生成验证码、图片裁剪等;
php74-php-xml:XML 解析与生成扩展;
php74-php-sockets:Socket 网络通信扩展;
php74-php-session:会话状态管理扩展;
php74-php-snmp:SNMP 网络管理协议扩展;
php74-php-mysql:MySQL 数据库连接扩展。
系统变化:对应扩展的 .so 模块文件被安装到 PHP 扩展目录,PHP 运行时可加载对应功能。
6. 创建 PHP 命令全局软链接
ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php
命令解释:创建软链接(类似 Windows 快捷方式),将 REMI 安装的 PHP 可执行文件链接到系统全局 PATH 路径 /usr/bin/ 下。
系统变化:在终端任意路径下直接输入 php 命令即可调用 PHP 7.4,无需输入完整的绝对路径。
7. 查看 PHP 版本
php -v
命令解释:查看当前 PHP 的版本信息,用于验证安装是否成功、软链接是否生效。
系统变化:终端输出 PHP 版本号(预期为 PHP 7.4.x)、构建信息等内容。
8. 验证数据库相关模块
php -m | grep -E "mysqlnd|pdo"
命令解释:列出所有已加载的 PHP 模块,并通过 grep 筛选出 mysqlnd、PDO 相关的数据库驱动模块。
php -m:列出 PHP CLI 模式下已加载的全部扩展模块;
grep -E "mysqlnd|pdo":使用正则匹配,过滤出包含 mysqlnd 或 pdo 的行。
系统变化:终端输出匹配到的模块名,正常会显示 mysqlnd、pdo_mysql 等,代表数据库驱动已正常加载。

三、MySQL数据准备
MySQL80安装教程参考:CentOS 7安装MySQL 8.0(完整版)
安装之后开始准备数据。

MySQL 8.0 默认的 caching_sha2_password 密码认证插件与 PHP 7.4 不兼容,必须按以下方式创建用户,否则会连接失败。

-- 1. 创建人员管理数据库

CREATE DATABASE person_manage DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 2. 创建专用业务用户(必须指定 mysql_native_password 认证,兼容PHP7.4)

CREATE USER 'pm_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Admin@123456';

-- 3. 授权用户访问该数据库

GRANT ALL PRIVILEGES ON person_manage.* TO 'pm_user'@'localhost';

FLUSH PRIVILEGES;

-- 4. 切换到目标数据库

USE person_manage;

-- 5. 创建人员信息表

CREATE TABLE persons (

   id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',

   name VARCHAR(50) NOT NULL COMMENT '姓名',

   age INT COMMENT '年龄',

   gender VARCHAR(10) COMMENT '性别',

   phone VARCHAR(20) COMMENT '手机号',

   email VARCHAR(100) COMMENT '邮箱',

   create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人员信息表';

-- 退出

exit;


四、PHP代码
一、整体目录结构与分层说明
目录结构(部署在 Apache 默认站点根目录 /var/www/html/ 下)
/var/www/html/
├── index.php                         # 入口文件:路由分发 + 环境初始化
├── config/
│   └── database.php              # 配置层:数据库参数 + PDO连接实例(全局唯一)
├── model/
│   └── PersonModel.php       # 模型层:封装所有人员表的SQL读写操作
├── controller/
│   └── PersonController.php  # 控制层:接收请求、参数校验、调度业务
└── view/
    ├── layout.php                    # 视图公共部分:页面头部、CSS样式
    └── list.php                         # 视图页面:表单 + 人员列表展示
分层职责与调用关系(核心规范)
入口层 index.php:唯一入口,接收所有请求,根据 action 参数分发到对应控制器方法,不写任何业务逻辑。
配置层 config:集中管理数据库连接信息,全局只初始化一次数据库连接,避免重复创建连接。
模型层 Model:只负责和数据库交互,所有 SQL 语句都写在这里;不处理业务、不输出页面。
控制层 Controller:业务调度中心,接收前端参数、做参数校验、调用模型读写数据、控制页面跳转;不直接写 SQL、不写 HTML。
视图层 View:只负责数据渲染和页面展示,只做变量输出和循环,不写业务逻辑、不操作数据库。
调用链路:浏览器请求 → index.php 入口 → 调用 PersonController 对应方法 → 方法内调用 PersonModel 操作数据库 → 控制器加载视图 → 返回 HTML 给浏览器。
二、拆分后各文件完整代码
1. 配置层:config/database.php
文件路径:/var/www/html/config/database.php
核心职责:统一维护数据库配置,创建全局唯一的 PDO 连接实例,所有模型都复用这个连接。
<?php
/**
 * 数据库配置与连接文件
 * 全局唯一PDO实例,避免重复创建数据库连接
 */
// 数据库连接参数(集中配置,修改一处全局生效)
$db_config = [
    'host'    => 'localhost',
    'dbname'  => 'person_manage',
    'user'    => 'pm_user',
    'pass'    => 'Admin@123456', // 修改为你的数据库密码
    'charset' => 'utf8mb4'
];
// 创建PDO数据库连接实例,全局复用
try {
    $pdo = new PDO(
        "mysql:host={$db_config['host']};dbname={$db_config['dbname']};charset={$db_config['charset']}",
        $db_config['user'],
        $db_config['pass'],
        [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION, // 异常模式报错
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,       // 默认关联数组返回
            PDO::ATTR_EMULATE_PREPARES   => false                   // 禁用模拟预处理,强化防注入
        ]
    );
} catch (PDOException $e) {
    die("数据库连接失败:" . $e->getMessage());
}
2. 模型层:model/PersonModel.php
文件路径:/var/www/html/model/PersonModel.php
核心职责:封装 persons 表的所有增删改查 SQL 操作,是数据库和业务层的中间层。控制器只调用方法,不接触 SQL。
<?php
/**
 * 人员数据模型
 * 所有人员表的数据库操作都封装在此,外部仅调用方法即可
 */
class PersonModel
{
    private $pdo;
    // 构造方法:注入数据库连接实例,依赖注入规范
    public function __construct($pdo)
    {
        $this->pdo = $pdo;
    }
    /**
     * 添加人员
     * @param array $data 人员信息数组 [name, age, gender, phone, email]
     * @return bool 执行结果
     */
    public function addPerson($data)
    {
        $sql = "INSERT INTO persons (name, age, gender, phone, email) VALUES (?, ?, ?, ?, ?)";
        $stmt = $this->pdo->prepare($sql);
        return $stmt->execute([
            $data['name'],
            $data['age'],
            $data['gender'],
            $data['phone'],
            $data['email']
        ]);
    }
    /**
     * 根据ID删除人员
     * @param int $id 人员ID
     * @return bool 执行结果
     */
    public function deletePersonById($id)
    {
        $sql = "DELETE FROM persons WHERE id = ?";
        $stmt = $this->pdo->prepare($sql);
        return $stmt->execute([$id]);
    }
    /**
     * 根据ID更新人员信息
     * @param int $id 人员ID
     * @param array $data 更新的人员信息
     * @return bool 执行结果
     */
    public function updatePersonById($id, $data)
    {
        $sql = "UPDATE persons SET name=?, age=?, gender=?, phone=?, email=? WHERE id=?";
        $stmt = $this->pdo->prepare($sql);
        return $stmt->execute([
            $data['name'],
            $data['age'],
            $data['gender'],
            $data['phone'],
            $data['email'],
            $id
        ]);
    }
    /**
     * 根据ID查询单条人员信息
     * @param int $id 人员ID
     * @return array|false 人员信息数组,不存在返回false
     */
    public function getPersonById($id)
    {
        $sql = "SELECT * FROM persons WHERE id = ?";
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute([$id]);
        return $stmt->fetch();
    }
    /**
     * 查询所有人员列表(按ID倒序)
     * @return array 人员列表二维数组
     */
    public function getAllPersons()
    {
        $sql = "SELECT * FROM persons ORDER BY id DESC";
        $stmt = $this->pdo->query($sql);
        return $stmt->fetchAll();
    }
}
3. 控制层:controller/PersonController.php
文件路径:/var/www/html/controller/PersonController.php
核心职责:业务逻辑调度中心,接收前端请求参数、做参数校验、调用模型完成数据操作、控制页面跳转与视图渲染。
<?php
/**
 * 人员控制器
 * 处理所有人员相关的请求:添加、删除、编辑、列表展示
 */
class PersonController
{
    private $personModel;
    // 构造方法:注入人员模型实例
    public function __construct($personModel)
    {
        $this->personModel = $personModel;
    }
    /**
     * 处理添加人员请求
     */
    public function add()
    {
        // 接收并过滤参数
        $data = [
            'name'   => trim($_POST['name']),
            'age'    => intval($_POST['age']),
            'gender' => trim($_POST['gender']),
            'phone'  => trim($_POST['phone']),
            'email'  => trim($_POST['email'])
        ];
        // 参数校验:姓名必填
        if (empty($data['name'])) {
            echo "<script>alert('姓名不能为空');history.back();</script>";
            exit;
        }
        // 调用模型执行添加
        $this->personModel->addPerson($data);
        // 操作完成后跳转回列表页(PRG模式,防止重复提交)
        header("Location: index.php");
        exit;
    }
    /**
     * 处理删除人员请求
     */
    public function delete()
    {
        $id = intval($_GET['id']);
        if ($id <= 0) {
            echo "<script>alert('参数错误');history.back();</script>";
            exit;
        }
        $this->personModel->deletePersonById($id);
        header("Location: index.php");
        exit;
    }
    /**
     * 处理编辑人员提交
     */
    public function edit()
    {
        $id = intval($_POST['id']);
        if ($id <= 0) {
            echo "<script>alert('参数错误');history.back();</script>";
            exit;
        }
        $data = [
            'name'   => trim($_POST['name']),
            'age'    => intval($_POST['age']),
            'gender' => trim($_POST['gender']),
            'phone'  => trim($_POST['phone']),
            'email'  => trim($_POST['email'])
        ];
        if (empty($data['name'])) {
            echo "<script>alert('姓名不能为空');history.back();</script>";
            exit;
        }
        $this->personModel->updatePersonById($id, $data);
        header("Location: index.php");
        exit;
    }
    /**
     * 渲染列表页面(默认首页)
     * 读取人员数据,加载视图
     */
    public function index()
    {
        // 获取待编辑的人员信息(编辑模式下)
        $edit_person = null;
        if ($_GET['action'] === 'edit' && isset($_GET['id'])) {
            $id = intval($_GET['id']);
            $edit_person = $this->personModel->getPersonById($id);
        }
        // 获取全部人员列表
        $person_list = $this->personModel->getAllPersons();
        // 加载视图页面,把数据传递过去
        require_once __DIR__ . '/../view/list.php';
    }
}
4. 视图层
4.1 公共布局:view/layout.php
文件路径:/var/www/html/view/layout.php
核心职责:页面公共头部、CSS 样式统一管理,所有页面复用,避免重复代码。
<?php
/**
 * 页面公共布局:头部 + 样式
 * 所有视图页面引入此文件即可,统一修改样式全局生效
 */
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>人员信息管理系统</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: "Microsoft YaHei", Arial, sans-serif;
        }
        body {
            background-color: #f0f2f5;
            padding: 30px 20px;
        }
        .container {
            max-width: 1100px;
            margin: 0 auto;
            background: #fff;
            border-radius: 8px;
            box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
            padding: 25px 30px;
        }
        h1 {
            text-align: center;
            color: #333;
            margin-bottom: 25px;
            font-size: 24px;
        }
        .form-box {
            background-color: #f8f9fa;
            padding: 20px;
            border-radius: 6px;
            margin-bottom: 25px;
            border: 1px solid #e9ecef;
        }
        .form-box h3 {
            margin-bottom: 15px;
            color: #444;
            font-size: 16px;
        }
        .form-row {
            display: flex;
            gap: 15px;
            flex-wrap: wrap;
            margin-bottom: 15px;
        }
        .form-item {
            flex: 1;
            min-width: 150px;
        }
        .form-item label {
            display: block;
            font-size: 14px;
            color: #555;
            margin-bottom: 6px;
        }
        .form-item input {
            width: 100%;
            padding: 8px 10px;
            border: 1px solid #dcdfe6;
            border-radius: 4px;
            font-size: 14px;
            outline: none;
        }
        .form-item input:focus {
            border-color: #409eff;
        }
        .btn {
            padding: 8px 20px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 14px;
            transition: background 0.2s;
        }
        .btn-primary {
            background-color: #409eff;
            color: #fff;
        }
        .btn-primary:hover {
            background-color: #66b1ff;
        }
        .btn-danger {
            background-color: #f56c6c;
            color: #fff;
        }
        .btn-danger:hover {
            background-color: #f78989;
        }
        .btn-warning {
            background-color: #e6a23c;
            color: #fff;
            text-decoration: none;
            display: inline-block;
        }
        .btn-warning:hover {
            background-color: #ebb563;
        }
        .table-box h3 {
            margin-bottom: 12px;
            color: #333;
            font-size: 16px;
        }
        table {
            width: 100%;
            border-collapse: collapse;
        }
        th, td {
            padding: 12px 8px;
            text-align: center;
            border-bottom: 1px solid #ebeef5;
            font-size: 14px;
        }
        th {
            background-color: #f5f7fa;
            color: #333;
            font-weight: 600;
        }
        tr:hover {
            background-color: #fafafa;
        }
        .empty-tip {
            text-align: center;
            color: #909399;
            padding: 40px 0;
        }
        .op-btns a {
            margin: 0 5px;
            padding: 5px 10px;
            border-radius: 3px;
            font-size: 13px;
            text-decoration: none;
        }
    </style>
</head>
<body>
<div class="container">
    <h1>人员信息管理系统</h1>
4.2 列表页面:view/list.php
文件路径:/var/www/html/view/list.php
核心职责:纯展示层,只负责把控制器传过来的数据渲染成 HTML,不包含任何业务逻辑和数据库操作。
<?php
/**
 * 人员列表视图
 * 仅做数据渲染,依赖控制器传入的 $edit_person 和 $person_list 变量
 */
// 引入公共头部布局
require_once __DIR__ . '/layout.php';
?>
    <!-- 添加/编辑表单 -->
    <div class="form-box">
        <h3><?php echo $edit_person ? '编辑人员信息' : '添加新人员'; ?></h3>
        <form method="post" action="index.php">
            <input type="hidden" name="action" value="<?php echo $edit_person ? 'edit' : 'add'; ?>">
            <?php if ($edit_person): ?>
                <input type="hidden" name="id" value="<?php echo $edit_person['id']; ?>">
            <?php endif; ?>
            <div class="form-row">
                <div class="form-item">
                    <label>姓名 <span style="color:red">*</span></label>
                    <input type="text" name="name" required 
                           value="<?php echo htmlspecialchars($edit_person['name'] ?? ''); ?>">
                </div>
                <div class="form-item">
                    <label>年龄</label>
                    <input type="number" name="age" 
                           value="<?php echo $edit_person['age'] ?? ''; ?>">
                </div>
                <div class="form-item">
                    <label>性别</label>
                    <input type="text" name="gender" placeholder="男/女"
                           value="<?php echo htmlspecialchars($edit_person['gender'] ?? ''); ?>">
                </div>
                <div class="form-item">
                    <label>手机号</label>
                    <input type="text" name="phone"
                           value="<?php echo htmlspecialchars($edit_person['phone'] ?? ''); ?>">
                </div>
                <div class="form-item">
                    <label>邮箱</label>
                    <input type="email" name="email"
                           value="<?php echo htmlspecialchars($edit_person['email'] ?? ''); ?>">
                </div>
            </div>
            <button type="submit" class="btn btn-primary">
                <?php echo $edit_person ? '确认修改' : '添加人员'; ?>
            </button>
            <?php if ($edit_person): ?>
                <a href="index.php" class="btn btn-danger" style="text-decoration:none; display:inline-block; margin-left:8px;">取消编辑</a>
            <?php endif; ?>
        </form>
    </div>
    <!-- 人员列表 -->
    <div class="table-box">
        <h3>人员列表(共 <?php echo count($person_list); ?> 条记录)</h3>
        <table>
            <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>手机号</th>
                <th>邮箱</th>
                <th>创建时间</th>
                <th>操作</th>
            </tr>
            </thead>
            <tbody>
            <?php if (empty($person_list)): ?>
                <tr>
                    <td colspan="8" class="empty-tip">暂无人员数据,请在上方表单添加</td>
                </tr>
            <?php else: ?>
                <?php foreach ($person_list as $p): ?>
                <tr>
                    <td><?php echo $p['id']; ?></td>
                    <td><?php echo htmlspecialchars($p['name']); ?></td>
                    <td><?php echo $p['age']; ?></td>
                    <td><?php echo htmlspecialchars($p['gender']); ?></td>
                    <td><?php echo htmlspecialchars($p['phone']); ?></td>
                    <td><?php echo htmlspecialchars($p['email']); ?></td>
                    <td><?php echo $p['create_time']; ?></td>
                    <td class="op-btns">
                        <a href="?action=edit&id=<?php echo $p['id']; ?>" class="btn-warning">编辑</a>
                        <a href="?action=delete&id=<?php echo $p['id']; ?>" 
                           class="btn-danger"
                           onclick="return confirm('确定要删除该人员信息吗?删除后无法恢复')">删除</a>
                    </td>
                </tr>
                <?php endforeach; ?>
            <?php endif; ?>
            </tbody>
        </table>
    </div>
</div>
</body>
</html>
5. 入口文件:index.php
文件路径:/var/www/html/index.php
核心职责:系统唯一入口,初始化配置、实例化模型与控制器、根据 action 参数分发请求,是所有功能的总调度入口。
<?php
/**
 * 系统入口文件
 * 所有请求统一进入此处,根据action参数分发到对应控制器方法
 */
// 1. 引入数据库配置与连接
require_once __DIR__ . '/config/database.php';
// 2. 引入模型与控制器
require_once __DIR__ . '/model/PersonModel.php';
require_once __DIR__ . '/controller/PersonController.php';
// 3. 实例化模型与控制器(依赖注入)
$personModel = new PersonModel($pdo);
$controller = new PersonController($personModel);
// 4. 路由分发:根据请求参数调用对应方法
$action = $_REQUEST['action'] ?? 'index';
switch ($action) {
    case 'add':
        $controller->add();
        break;
    case 'delete':
        $controller->delete();
        break;
    case 'edit':
        // POST提交走编辑处理,GET走页面回显
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            $controller->edit();
        } else {
            $controller->index();
        }
        break;
    default:
        // 默认显示列表页
        $controller->index();
        break;
}
三、部署步骤与权限设置
1. 创建目录结构
cd /var/www/html/
mkdir -p config model controller view
2. 按上面的路径逐个创建文件并写入代码
3. 设置目录权限(Apache 运行用户为 apache)
chown -R apache:apache /var/www/html/
chmod -R 755 /var/www/html/
# 临时关闭SELinux,避免权限报错
setenforce 0
五、浏览器访问
 访问验证
浏览器输入服务器 IP 地址:http://你的服务器IP/ 。
到此,由PHP+MySQL搭建的简易管理系统已搭建完成,快动手试试吧。
六、整体架构分析(扩展)

整体架构静态框图

1.先建立全局位置感:每一层只和相邻层打交道,依赖单向向下,不会反向调用。

2.PHP ↔ MySQL 底层交互原理图(PDO 预处理执行流程)
3.垂直方向:一次请求的完整链路(从外到内)
4.水平方向:PHP 代码内部的分层依赖关系

核心原则:依赖只能从上往下传,不能反向依赖。

  • 模型层 不能 调用控制器,也不能输出页面
  • 控制器 不能 直接写 SQL,也不能写大量 HTML
  • 视图层 不能 直接操作数据库,只能用控制器传过来的变量
亲爱的读者,文章到此结束,感谢您阅读我的文章。
感谢您的支持和关注,期待与您在未来的文章中再次相见。

点分享

点收藏

点点赞

点在看

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 15:26:58 HTTP/2.0 GET : https://f.mffb.com.cn/a/503381.html
  2. 运行时间 : 0.212843s [ 吞吐率:4.70req/s ] 内存消耗:4,853.64kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=71a4793d32664c96dee10d598e79f824
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000649s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000834s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000291s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000295s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000484s ]
  6. SELECT * FROM `set` [ RunTime:0.000211s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000546s ]
  8. SELECT * FROM `article` WHERE `id` = 503381 LIMIT 1 [ RunTime:0.003505s ]
  9. UPDATE `article` SET `lasttime` = 1783150019 WHERE `id` = 503381 [ RunTime:0.034856s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000376s ]
  11. SELECT * FROM `article` WHERE `id` < 503381 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000699s ]
  12. SELECT * FROM `article` WHERE `id` > 503381 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001412s ]
  13. SELECT * FROM `article` WHERE `id` < 503381 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.043811s ]
  14. SELECT * FROM `article` WHERE `id` < 503381 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.052746s ]
  15. SELECT * FROM `article` WHERE `id` < 503381 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002741s ]
0.214509s