如何用MySQL创建设置表实现网站设置功能

来源:站长素材作者:阿里山老登头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何用MySQL创建设置表实现网站设置功能》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何用MySQL创建设置表实现网站设置功能》有用,将其分享出去将是对创作者最好的鼓励。

网站运行过程中经常需要存储一些全局配置信息,比如站点名称、管理员邮箱、备案号、默认分页大小等,将这些信息直接写在代码里会导致后续修改需要重新部署,维护成本很高。使用MySQL创建专门的设置表来存储这些配置,可以让配置修改更灵活,也方便统一管理。

如何用MySQL创建设置表实现网站设置功能

设置表的设计思路

设置表的核心需求是存储键值对形式的配置项,同时需要支持配置的扩展,不需要频繁修改表结构。常见的设计有两种方案:

  • 纵向存储方案:每行存储一个配置项,包含配置键、配置值、配置描述等字段,扩展新配置只需要插入新行,不需要改表结构,是更推荐的设计方式。
  • 横向存储方案:每个配置项作为表的一个字段,扩展新配置需要新增字段,适合配置项固定且数量很少的场景。

纵向存储设置表的创建

以下是推荐的纵向存储设置表的SQL创建语句:

-- 创建网站设置表
CREATE TABLE `site_setting` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `setting_key` varchar(100) NOT NULL COMMENT '配置键,唯一标识',
  `setting_value` text COMMENT '配置值',
  `setting_desc` varchar(255) DEFAULT NULL COMMENT '配置描述',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_setting_key` (`setting_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='网站全局设置表';

表结构说明:

  • setting_key设置唯一索引,避免重复插入相同的配置项。
  • setting_value使用text类型,可以存储较长的配置内容,比如站点公告、备案号等。
  • update_time设置自动更新,每次修改配置都会自动记录更新时间。

设置表的常用操作

插入初始配置项

网站上线前可以插入一些默认的配置项:

INSERT INTO `site_setting` (`setting_key`, `setting_value`, `setting_desc`) VALUES
('site_name', '我的个人博客', '站点名称'),
('site_admin_email', 'admin@ipipp.com', '管理员邮箱'),
('site_icp', '粤ICP备12345678号', '备案号'),
('page_size', '10', '默认分页大小');

查询指定配置项

获取站点名称的配置值:

SELECT `setting_value` FROM `site_setting` WHERE `setting_key` = 'site_name';

更新配置项

修改站点名称:

UPDATE `site_setting` SET `setting_value` = '新的博客名称' WHERE `setting_key` = 'site_name';

批量查询所有配置

如果需要一次性获取所有配置,可以查询全表后转成键值对结构:

SELECT `setting_key`, `setting_value` FROM `site_setting`;

后端调用设置的示例

以下是PHP语言读取设置表的示例代码,其他语言逻辑类似:

<?php
// 假设已经建立了MySQL连接,$conn是连接对象
function getSiteSetting($key) {
    $sql = "SELECT setting_value FROM site_setting WHERE setting_key = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("s", $key);
    $stmt->execute();
    $result = $stmt->get_result();
    if ($row = $result->fetch_assoc()) {
        return $row['setting_value'];
    }
    return null;
}

// 获取站点名称
$siteName = getSiteSetting('site_name');
echo "当前站点名称:" . $siteName;
?>

注意事项

  • 如果配置项读取非常频繁,可以在应用层添加缓存,避免每次请求都查询数据库,减少数据库压力。
  • 对于敏感配置比如数据库密码、API密钥,不建议存在这个公开的设置表中,应该使用环境变量或者专门的加密配置存储方案。
  • 修改配置后如果需要立即生效,要注意清理对应的应用缓存,避免读取到旧数据。

MySQL设置表网站设置数据库设计修改时间:2026-07-15 12:21:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。