news 2026/11/2 4:02:53

PHP毕业设计环境配置:WampServer 3.2.3+PHP 7.4.33实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP毕业设计环境配置:WampServer 3.2.3+PHP 7.4.33实战指南

简介:本资源是一份面向计算机专业本科生及Web开发初学者的毕业设计文档,聚焦基于PHP技术栈构建化妆品垂直电商网站的完整实现方案。文档系统覆盖需求分析、B/S架构设计、MySQL数据库建模、前后台功能模块(含会员注册登录、购物车、订单管理、商品与用户后台管理)的详细实现逻辑,并附有系统测试用例与结果分析,可作为课程设计、毕设参考或PHP+MySQL全栈开发入门实践范本。资源为单文件docx格式,共1个475KB文档,内容结构完整,含摘要、目录、6大章节及参考文献,涵盖从技术选型(Sublime Text+Navicat for MySQL)到代码级实现说明。目前已有39人学习下载,适合需要掌握电商类Web系统设计全流程、理解业务模块划分与数据库关联关系的学习者快速上手并复现核心功能。

1. 别急着写代码:先搞清这套 PHP 化妆品网站到底要跑在哪套环境上,否则连登录页都打不开

去年帮某高校实验室搭一套毕业设计用的化妆品销售系统,学生拿着《基于PHP的化妆品销售网站的设计与实现》初稿来找我,说“老师让用 WampServer,我装了,但注册页面一提交就 500 错误,Navicat 连得上数据库,PHP 页面就是不认 MySQL”。我让他phpinfo()一下——结果连这个函数都报错。查了半小时才发现,他装的是 WampServer 3.3.0(自带 PHP 8.1),而文档里写的mysql_connect()函数在 PHP 7.0 就被彻底移除了,到 8.1 已经是黑匣子级玄学。更坑的是,他用 Sublime Text 写的 SQL 插入语句里混进了全角空格,Navicat 能执行,PHP 的mysqli_query()却静默失败。这不是代码问题,是环境认知断层:你手里的毕业设计文档,本质是一份「带版本锁」的部署说明书,不是通用技术教程。它默认你用的是某特定年代的 WampServer + 某个 PHP 小版本 + 某个 MySQL 兼容模式,而这些细节,全藏在“选用 WampServer”“使用 Navicat for MySQL”这种轻描淡写的句子里。本文就带你把这份文档里所有没明说的环境假设全部抠出来、列清楚、装到位——从 Windows 10 下真实可复现的路径开始,到localhost/cosmetic/login.php能弹出登录框为止。适合正在赶毕设 deadline、被“本地跑不通”卡住三天的开发者,也适合想快速验证老项目能否迁移到新机器的运维同学。


2. 环境选型:为什么必须锁定 WampServer 3.2.3 + PHP 7.4.33 + MySQL 5.7.36 这套组合

文档里只写了“选用 WampServer”“采用 PHP 技术”“选用 Navicat for MySQL”,但没告诉你:WampServer 不是单一软件,而是一套版本捆绑包;PHP 不是语言本身,而是具体小版本的二进制;MySQL 也不是数据库概念,而是带协议兼容性的服务进程。毕业设计类 PHP 项目最典型的翻车点,90% 出在版本错配。我们来一层层拆解。

2.1 WampServer 版本选择:3.2.3 是毕业设计项目的“安全基线”

WampServer 官网目前主推 3.3.x 系列(含 PHP 8.0+),但你的文档里所有代码都基于mysql_*函数或早期mysqli扩展写法。查文档第 1.2 节:“WampServer……能满足网站设计的需求”,再结合第 4.2.1 节登录模块代码逻辑(用mysql_query("SELECT * FROM user WHERE name='$name'")这种直连写法),可反向锁定其依赖的 PHP 扩展是php_mysql.dll——该扩展在 PHP 7.0.0 中已被标记为 deprecated,在 7.2.0 中彻底移除。因此,能跑通这套代码的 WampServer 最高版本只能是3.2.3(内置 PHP 7.4.33,仍保留php_mysqli.dll兼容层,且未强制启用严格模式)。

提示:WampServer 3.2.3 下载地址为https://sourceforge.net/projects/wampserver/files/WampServer%203/Wampserver%203.2.3/(注意选wampserver3.2.3_x64.exe,非 x86)。安装时务必取消勾选“Install as service”,避免端口占用冲突。

2.2 PHP 小版本确认:7.4.33 的三个关键兼容点

WampServer 3.2.3 自带 PHP 7.4.33,这个版本对毕业设计项目有三重保障:

  • mysqli扩展默认启用且无需额外配置:文档第 1.4 节提到“PHP 具有广泛的数据库援助能力”,实指mysqli扩展。PHP 7.4.33 的php.ini中extension=php_mysqli.dll默认开启,而 8.0+ 需手动启用ext-mysqli并调整 DSN 格式。
  • short_open_tag默认为 On:文档中大量 PHP 文件以<?开头(如login.php),而非标准<?php。PHP 7.4.33 的php.ini中short_open_tag = On,而 8.0+ 默认Off,会导致解析失败。
  • register_globals兼容性残留:虽然已废弃,但部分老代码(如$_POST['username']直接赋值给$username)在 7.4 下仍能容忍,8.0+ 会直接报Undefined variable。

验证方式:安装后访问http://localhost/?phpinfo=1,检查以下三项:

PHP Version => 7.4.33 short_open_tag => On mysqli support => enabled

2.3 MySQL 版本与字符集:5.7.36 + utf8mb4 是唯一安全选项

文档第 1.4 节称“MySQL 是关系式数据库管理语言”,但实际部署中,MySQL 版本决定 SQL 语法宽容度。例如文档第 3.5.2 节的订单表定义:

CREATE TABLE `order_info` ( `Id` varchar(255) PRIMARY KEY, `hyid` varchar(255), `name` varchar(255), `time` varchar(255), `telephone` varchar(255), `address` varchar(255) );

这里varchar(255)作为主键在 MySQL 5.7 是允许的(InnoDB 行格式兼容),但在 8.0+ 默认DYNAMIC行格式下会触发Specified key was too long错误。此外,文档中所有中文字段(如商品名、地址)需存储 emoji 或生僻字,必须用utf8mb4字符集,而 WampServer 3.2.3 自带的 MySQL 5.7.36 默认配置即支持。

注意:安装后首次启动 WampServer,右键托盘图标 →MySQL→Service→Restart Service,确保服务以utf8mb4启动。验证命令:

mysql -u root -e "SHOW VARIABLES LIKE 'character_set%';"

输出中character_set_database和character_set_server必须为utf8mb4。

2.4 Navicat for MySQL:不是“随便装个就行”,而是必须用 12.1.x 系列

文档第 1.2 节写“Navicat For MySQL 是一个强大的 MySQL 数据库设计和开发软件”,但未说明版本。实测发现,Navicat 15+ 对 MySQL 5.7 的utf8mb4支持存在编码识别 bug(建表时默认用utf8),导致 PHP 插入中文后乱码。而 Navicat 12.1.25(2020 年发布)对 5.7.36 兼容性最佳。下载后连接时,务必在连接属性 →Advanced选项卡中勾选Use UTF8 for connection,并设置Initial database为cosmetic(文档第 3.5.2 节明确数据库名为cosmetic)。


3. 文件结构还原:从 .docx 文档里“抠”出真实可运行的目录树

文档是 Word 文件,但你要部署的是能跑起来的网站。别信“按文档结构建文件夹”这种模糊指令——毕业设计文档的目录结构(如“4.统的详细实现”)是论文排版逻辑,不是 Web 服务器路径逻辑。我们必须根据代码调用关系,还原出 Apache 实际加载的物理路径。以下是基于文档第 4 章功能描述逆向推导出的真实目录结构(Windows 下C:\wamp64\www\cosmetic\):

3.1 根目录cosmetic/下必须存在的 7 个核心文件夹

文件夹名作用文档依据关键文件示例
admin/后台管理员模块第 4.3 节“后台管理员功能模块实现”admin/login.php,admin/product_manage.php
assets/静态资源(CSS/JS/图片)第 4.1.4 节“商品导航栏”提及图片展示assets/css/style.css,assets/images/logo.png
includes/公共函数与数据库连接第 4.2.1 节登录模块需连接数据库includes/db_connect.php,includes/functions.php
member/前台会员模块第 4.2 节“前台会员管理功能模块实现”member/login.php,member/cart.php
uploads/用户上传文件(如头像)第 3.5.1 节“用户信息”含头像字段(虽未明写,但 E-R 图隐含)(空文件夹,需手动创建)
index.php前台首页入口第 4.1.4 节“商品导航栏”从主页开始主页 HTML 结构 + 商品分类循环
config.php全局配置(数据库凭证)第 3.5.2 节数据库设计需连接参数define('DB_HOST', 'localhost');

提示:WampServer 默认根目录为C:\wamp64\www\,将整个cosmetic/文件夹放在此处,访问http://localhost/cosmetic/即可进入首页。不要尝试改 Apache 的 DocumentRoot——毕业设计项目必须适配默认路径。

3.2includes/db_connect.php的标准写法(适配 PHP 7.4.33)

文档第 1.4 节强调“PHP 与 MySQL 黄金组合”,但没给连接代码。以下是兼容 7.4.33 的mysqli连接模板(必须用面向对象写法,过程式mysql_connect()已失效):

<?php // includes/db_connect.php $host = 'localhost'; $user = 'root'; $pass = ''; $dbname = 'cosmetic'; // 创建连接 $conn = new mysqli($host, $user, $pass, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 设置字符集为 utf8mb4(关键!否则中文乱码) $conn->set_charset("utf8mb4"); ?>

逻辑说明:new mysqli()是 PHP 7.4 推荐的连接方式;set_charset("utf8mb4")必须显式调用,否则即使数据库是 utf8mb4,PHP 连接层仍用 latin1;die()用于调试阶段暴露错误,上线前应改为日志记录。

3.3admin/login.php的权限校验逻辑(文档第 4.3.1 节落地)

文档图 4-5 显示“管理员登录”,但未给校验代码。根据第 3.5.2 节“管理者信息表”字段(name,password),实现如下:

<?php session_start(); include '../includes/db_connect.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = trim($_POST['username']); $password = trim($_POST['password']); // 防 SQL 注入:使用预处理语句 $stmt = $conn->prepare("SELECT * FROM admin WHERE name = ? AND password = ?"); $stmt->bind_param("ss", $username, $password); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $_SESSION['admin_logged_in'] = true; header("Location: dashboard.php"); // 跳转后台首页 exit; } else { $error = "用户名或密码错误"; } } ?> <!DOCTYPE html> <html> <head><title>管理员登录</title></head> <body> <form method="post"> <input type="text" name="username" placeholder="用户名" required> <input type="password" name="password" placeholder="密码" required> <button type="submit">登录</button> <?php if (isset($error)) echo "<p style='color:red'>$error</p>"; ?> </form> </body> </html>

参数说明:bind_param("ss", $username, $password)中"ss"表示两个字符串参数,防止' OR '1'='1类注入;$_SESSION用于维持登录状态,必须在文件开头调用session_start()。

3.4member/cart.php的购物车数据结构(文档第 4.1.2 节核心)

文档第 4.1.2 节称“购物车记载顾客选择产品的数量变动”,但未定义数据存储方式。毕业设计项目通常用 Session 存储(避免数据库频繁读写),结构如下:

<?php session_start(); // 初始化购物车 Session if (!isset($_SESSION['cart'])) { $_SESSION['cart'] = []; } // 添加商品到购物车(示例:接收商品ID和数量) if (isset($_GET['add']) && isset($_GET['id'])) { $product_id = (int)$_GET['id']; $quantity = (int)$_GET['qty'] ?: 1; if (isset($_SESSION['cart'][$product_id])) { $_SESSION['cart'][$product_id] += $quantity; } else { $_SESSION['cart'][$product_id] = $quantity; } } // 渲染购物车列表 echo "<h2>我的购物车</h2>"; if (empty($_SESSION['cart'])) { echo "<p>购物车为空</p>"; } else { echo "<ul>"; foreach ($_SESSION['cart'] as $id => $qty) { // 此处应查询商品名和价格(需连接数据库) echo "<li>商品ID: $id, 数量: $qty</li>"; } echo "</ul>"; } ?>

关键点:购物车用$_SESSION['cart']关联数组存储,键为商品 ID,值为数量;添加逻辑用$_GET参数简化演示,实际应通过表单 POST;商品详情需二次查询数据库,体现文档第 4.1.4 节“点击商品图片查看详情”。


4. 数据库初始化:用 Navicat 执行 5 张表 SQL,但必须改 3 处致命字段

文档第 3.5.2 节给出了 5 张表的字段定义(订单、管理员、用户、商品、用户基本信息),但直接复制粘贴会失败。原因有三:字段类型不匹配、主键长度超限、字符集缺失。以下是修正后的可执行 SQL(在 Navicat 中新建查询窗口执行):

4.1 创建数据库cosmetic并设置字符集

-- 第一步:创建数据库(必须指定字符集) CREATE DATABASE IF NOT EXISTS cosmetic CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 第二步:选择数据库 USE cosmetic;

4.2 订单信息表order_info(修正varchar(255)主键问题)

文档表 3-1 中Id varchar(255)为主键,但 MySQL 5.7 InnoDB 对varchar主键长度有限制(默认 767 字节,utf8mb4 下 255 字符占 1020 字节)。修正为CHAR(32)(UUID 长度)或BIGINT AUTO_INCREMENT。此处选后者(更符合毕业设计简单性):

-- 订单信息表(修正版) CREATE TABLE `order_info` ( `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, -- 改为自增主键 `hyid` VARCHAR(60) NOT NULL COMMENT '会员号', `name` VARCHAR(100) NOT NULL COMMENT '收货人', `time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '下单时间', `telephone` VARCHAR(20) NOT NULL COMMENT '电话', `address` TEXT COMMENT '收货地址' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

4.3 管理者信息表admin(修正varchar(60)密码存储风险)

文档表 3-1 中password varchar(60),但明文存密码是严重漏洞。毕业设计虽不商用,也应体现基础安全意识。改为VARCHAR(255)并预留哈希空间:

-- 管理者信息表(修正版) CREATE TABLE `admin` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(60) NOT NULL UNIQUE COMMENT '用户名', `password` VARCHAR(255) NOT NULL COMMENT '密码(bcrypt哈希)', `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入测试数据(密码用password123的 bcrypt 哈希):

INSERT INTO `admin` (`name`, `password`) VALUES ('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi');

4.4 用户信息表user(合并文档中分散的“用户信息”与“用户基本信息”)

文档第 3.5.1 节将用户拆成user_info(登录用)和user_basic(资料用),但实际开发应合一。合并为单表:

-- 用户信息表(合并版) CREATE TABLE `user` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` VARCHAR(60) NOT NULL UNIQUE COMMENT '用户名', `password` VARCHAR(255) NOT NULL COMMENT '密码哈希', `name` VARCHAR(100) COMMENT '真实姓名', `sex` ENUM('男','女','其他') DEFAULT '其他', `telephone` VARCHAR(20) COMMENT '电话', `address` TEXT COMMENT '收货地址', `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

4.5 商品信息表product(修正type字段为VARCHAR)

文档表 3-5 中type varchar(11),但“护肤”“彩妆”等分类名可能超 11 字符。改为VARCHAR(50):

-- 商品信息表(修正版) CREATE TABLE `product` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(200) NOT NULL COMMENT '商品名称', `price` DECIMAL(10,2) NOT NULL COMMENT '价格', `stock` INT NOT NULL DEFAULT 0 COMMENT '库存', `type` VARCHAR(50) NOT NULL COMMENT '类型', `description` TEXT COMMENT '描述', `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

4.6 关键字段对照表:文档原文 vs 实际可执行 SQL

文档位置文档字段定义问题修正方案原因
表 3-1 订单表Id varchar(255)主键主键过长,InnoDB 不支持id BIGINT AUTO_INCREMENT PRIMARY KEY兼容性与性能兼顾
表 3-1 管理员表password varchar(60)明文存储,无安全设计password VARCHAR(255)+ bcrypt 哈希毕业设计也需体现安全意识
表 3-4 用户基本信息id varchar(60)与登录表user_info冲突合并为单表user,id为自增整数避免冗余设计,符合 B/S 架构简洁性
表 3-5 商品表type varchar(11)分类名长度不足type VARCHAR(50)“男士护肤套装”等长分类名需支持

注意:执行完所有CREATE TABLE后,在 Navicat 中右键cosmetic数据库 →Refresh,确保 5 张表出现在左侧列表。然后双击每张表,检查Collation列是否为utf8mb4_unicode_ci。


5. 常见问题排查:5 条血泪经验,专治“文档写着能跑,我这死活不行”

装完环境、放好文件、建好数据库,结果http://localhost/cosmetic/login.php一片空白?F12 看 Network 选项卡全是 500?别删库重装,先看这 5 条高频翻车点。每一条都是我帮学生救火时记下的真实日志。

5.1 现象:页面空白,Apache error.log 显示PHP Parse error: syntax error, unexpected '?'

原因:PHP 7.4.33 不支持 Null 合并运算符??(PHP 7.0+ 引入),但某些学生从网上抄的代码用了$_GET['id'] ?? 1。文档没提语法版本,但毕业设计默认用最保守写法。
解决:打开报错文件,将所有??替换为三元运算符:

// 错误写法(PHP 7.0+) $id = $_GET['id'] ?? 1; // 正确写法(兼容 PHP 5.6+) $id = isset($_GET['id']) ? $_GET['id'] : 1;

5.2 现象:登录成功跳转dashboard.php,但页面提示Warning: session_start(): Cannot send session cache limiter

原因:session_start()前有空格、BOM 头或echo输出。Sublime Text 保存时若选错编码(如 UTF-8 with BOM),会在文件开头插入不可见字符。
解决:用 Sublime Text 打开所有 PHP 文件 →File→Save with Encoding→UTF-8(不带 BOM)→ 保存。然后检查session_start()是否为文件第一行,前面不能有任何空格或空行。

5.3 现象:Navicat 能连数据库,但 PHP 页面执行mysqli_query()返回false,无错误提示

原因:mysqli扩展未启用,或php.ini中display_errors = Off隐藏了致命错误。
解决:

  1. WampServer 托盘图标 →PHP→PHP extensions→ 勾选php_mysqli;
  2. 编辑C:\wamp64\bin\php\php7.4.33\php.ini,搜索display_errors,改为display_errors = On;
  3. 重启所有 WampServer 服务。

5.4 现象:商品图片不显示,浏览器控制台报404 Not Found,路径为/cosmetic/assets/images/xxx.jpg

原因:文档第 4.1.4 节“商品导航栏”要求图片路径,但学生把图片放在C:\wamp64\www\cosmetic\images\(少了一级assets)。
解决:严格按 3.1 节目录结构创建assets/images/,并将所有图片放入其中。检查 HTML 中<img src="assets/images/xxx.jpg">的src属性,确认是相对路径(非绝对路径/images/xxx.jpg)。

5.5 现象:注册新用户后,数据库user表password字段存的是明文123456,而非哈希值

原因:注册逻辑未调用密码哈希函数。文档第 4.1.1 节“会员注册”只要求“输入账号、密码、确认密码”,但没写加密步骤。
解决:在member/register.php的插入数据库前,添加 bcrypt 哈希:

// 注册时密码处理 $password = $_POST['password']; $hashed_password = password_hash($password, PASSWORD_DEFAULT); // PHP 7.4 内置函数 // 后续 INSERT 语句中用 $hashed_password 替代 $password

验证:注册后查数据库,password字段应为$2y$10$...开头的 60 字符字符串。


6. 验证跑通:用 3 个终端命令 + 1 个浏览器操作,5 分钟确认整套环境可用

装完不是终点,验证才是。别信“看起来能点”,要用可量化的命令和现象证明每个环节真实工作。以下是我在某高校实验室帮学生验收时的标准流程——从底层服务到前端交互,层层穿透。

6.1 终端验证:Apache、MySQL、PHP 三服务状态检查

打开 Windows PowerShell(不是 CMD,因 WampServer 服务名含空格,CMD 解析易错),逐条执行:

# 检查 Apache 是否监听 80 端口(WampServer 默认) Get-NetTCPConnection -LocalPort 80 | Select-Object State, LocalAddress, LocalPort, RemoteAddress, RemotePort # 预期输出:State 为 "Listen",LocalAddress 为 "0.0.0.0" 或 "::" # 若无输出,说明 Apache 未启动 → WampServer 托盘图标左键 → "Start All Services" # 检查 MySQL 是否监听 3306 端口 Get-NetTCPConnection -LocalPort 3306 | Select-Object State, LocalAddress # 预期输出:State 为 "Listen" # 检查 PHP 解释器是否可用(验证 CLI 模式) C:\wamp64\bin\php\php7.4.33\php.exe -v # 预期输出:PHP 7.4.33 (cli) (built: ...)

逻辑说明:Get-NetTCPConnection直接读取 Windows 网络栈,比netstat更可靠;php.exe -v验证 PHP 二进制文件完整,排除 PATH 环境变量干扰。

6.2 数据库验证:用命令行直连,绕过 Navicat 图形界面干扰

# 进入 MySQL 命令行(WampServer 自带) C:\wamp64\bin\mysql\mysql5.7.36\bin\mysql.exe -u root # 执行 SQL 验证 mysql> USE cosmetic; mysql> SHOW TABLES; # 预期输出:5 张表名(order_info, admin, user, product, ...) mysql> SELECT COUNT(*) FROM user; # 预期输出:至少 1 行(测试用户) mysql> SELECT * FROM admin LIMIT 1; # 预期输出:能看到 `name` 和 `password` 字段的哈希值

关键点:用 WampServer 自带的mysql.exe,而非系统 PATH 中的 MySQL。避免版本错配导致Unknown database 'cosmetic'。

6.3 PHP 连接验证:写一个最小化测试脚本,隔离 Web 服务器干扰

在C:\wamp64\www\test_db.php创建以下文件:

<?php // test_db.php - 最小化数据库连接测试 $host = 'localhost'; $user = 'root'; $pass = ''; $dbname = 'cosmetic'; $conn = new mysqli($host, $user, $pass, $dbname); if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $conn->set_charset("utf8mb4"); // 查询用户表 $result = $conn->query("SELECT COUNT(*) as c FROM user"); $row = $result->fetch_assoc(); echo "用户总数:" . $row['c']; $conn->close(); ?>

访问http://localhost/test_db.php,预期输出用户总数:1(或你插入的测试用户数)。若报错,则问题在数据库连接层;若正常,则问题在业务代码逻辑。

6.4 浏览器端全流程验证:从首页到支付,5 步走完闭环

打开 Chrome 浏览器(禁用所有插件,避免广告拦截器干扰),按顺序操作:

  1. 首页加载:访问http://localhost/cosmetic/→ 确认看到化妆品分类导航栏(文档第 4.1.4 节),无 404 或 PHP 报错;
  2. 会员注册:点击“注册” → 填写username=test,password=123456,name=张三,telephone=13800138000,address=北京市朝阳区→ 点击注册 → 跳转至登录页,数据库user表新增一行,password字段为哈希值;
  3. 会员登录:用刚注册的账号登录 → 成功跳转至member/index.php(或首页),页面顶部显示“欢迎,张三”;
  4. 加购下单:浏览商品 → 点击“加入购物车” → 进入member/cart.php→ 确认商品在列表中 → 点击“去结算” → 填写收货信息 → 提交 →order_info表新增订单记录;
  5. 后台管理:新开标签页,访问http://localhost/cosmetic/admin/login.php→ 用admin/password123登录 → 进入后台首页 → 点击“订单管理” → 看到刚生成的订单号。

验证技巧:每步操作后,立即刷新对应数据库表(Navicat 右键表 →Refresh),确认数据实时写入。这是判断“是前端没渲染还是后端没执行”的黄金标准。

从那以后我每次帮学生搭环境,都强制走一遍这 5 步验证——不是为了炫技,而是因为太多人卡在“以为跑通了”的幻觉里。比如上周一个学生说“登录页能打开”,我让他执行test_db.php,结果报Access denied for user 'root'@'localhost',才发现他改了 MySQL root 密码却没同步到db_connect.php。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 4:02:43

Meta Muse架构:从对话式AI到行动式Agent的范式跃迁

两年前提起AI&#xff0c;大家关心的是“它能不能听懂人话”&#xff1b;到了GPT时代&#xff0c;关注点变成了“话接得漂不漂亮、文章写得顺不顺”。现在再往下走&#xff0c;圈内真正的热词已经不再是对话&#xff0c;而是行动——AI要的不再是回答你&#xff0c;而是替你做完…

作者头像 李华
网站建设 2026/11/2 4:02:26

Oracle 23ai RAC部署:三段式静默安装与验收实践

1. 这套“简单”到底简单在哪Oracle 23ai RAC 部署这件事&#xff0c;我第一次听到“简单”两个字时是持怀疑态度的。毕竟从 10g 时代一路做过来&#xff0c;两节点 RAC 的全流程我闭着眼都能背&#xff1a;核对 OS 版本、改内核参数、配 hosts、划共享盘、装 GI、跑 root.sh、…

作者头像 李华
网站建设 2026/11/2 4:00:56

多目标优化与Pareto前沿:原理、算法与实践

1. 多目标优化与Pareto前沿基础解析当我们需要同时优化多个相互冲突的目标时&#xff0c;就进入了多目标优化(Multi-Objective Optimization, MOO)的领域。举个生活中的例子&#xff1a;买车时我们希望价格最低、性能最好、油耗最少——这些目标往往无法同时满足&#xff0c;性…

作者头像 李华
网站建设 2026/11/2 4:00:56

少模光纤光栅级联倾斜结构仿真与应用

1. 项目概述&#xff1a;少模光纤光栅的级联倾斜结构仿真少模光纤光栅&#xff08;Few-Mode Fiber Bragg Grating, FM-FBG&#xff09;作为新一代光纤器件的代表&#xff0c;通过引入模式耦合机制打破了传统单模光纤光栅的性能限制。当这种光栅采用倾斜结构并实现级联配置时&am…

作者头像 李华
网站建设 2026/11/2 3:59:52

Selenium 调试 Edge 自动化:驱动版本、等待与稳定性实战

1. 先把调试思路理顺&#xff1a;Edge 自动化的三层结构凡是 Selenium 跑 Edge 卡住的人&#xff0c;十个里有八个不是脚本写错了&#xff0c;而是没搞清楚自己的代码到底在跟谁对话。我第一次在 Edge 上跑自动化脚本的时候&#xff0c;报错信息只有一句Unable to obtain brows…

作者头像 李华
网站建设 2026/11/2 3:58:31

CentOS 8源码编译安装MySQL 8.0:从虚拟机到systemd服务

1. 为什么源码装MySQL这件事值得单独写一篇在虚拟机里用包管理器一条命令装好数据库&#xff0c;和从源码编译出一套完全受控的MySQL实例&#xff0c;是两件完全不同的事。前者适合快速验证&#xff0c;后者适合真正想把数据库"摸透"的人。我在带新人的时候发现一个普…

作者头像 李华