【PHP】通过PHP安装数据库并使数据初始化

news/2024/10/21 13:35:31/

一、前言

有些CMS在部署的时候不用使用数据库工具,而是通过数据库安装页面就能完成数据库创建和数据填充,所以自己就想动手做一个这样的功能,这样在给别人安装系统的时候就不用再那么麻烦了,直接一键安装解决了。

二、效果图

输入数据库相关信息后,点击安装并有不同的提示。

三、核心代码

原理:其实就是通过构建原生SQL来创建并初始化数据库,连接数据库、创建数据库、使用数据库、创建数据表、新增数据、关闭连接。

创建前首先要准备以下内容:

① 准备数据库的基本信息:数据库地址、数据库名称、用户名、密码

② 要创建的表及表结构

③ 要初始化的数据

public function createDb($data)
{$host = $data['mysqlHostname'];$user = $data['mysqlUsername'];$pwd = $data['mysqlPassword'];$db = $data['mysqlDatabase'];// 1.连接数据库$conn = mysqli_connect($host, $user, $pwd);if (!$conn) {// echo "1/7 数据库连接失败<br/><br/>";return '1/7 数据库连接失败';}else{// echo "1/7 数据库连接完成<br/><br/>";}// 2.创建数据库// 先删除再创建$sql = "DROP DATABASE {$db}";if (mysqli_query($conn, $sql)) {// echo "2/7 数据库删除完成<br/>";}else{// echo "2/7". mysqli_error($conn)."<br/><br/>";// return "2/7 ".mysqli_error($conn);}// 创建$sql = "create database {$db}";if (mysqli_query($conn, $sql)) {// echo "2/7 数据库创建完成<br/>";}else{// echo "2/7". mysqli_error($conn)."<br/><br/>";return "2/7 ".mysqli_error($conn);}// 3.使用数据表// echo "3/7 选择数据库开始...<br/>";$sql = "use {$db}";mysqli_query($conn,$sql);// echo "3/7 选择数据库完成<br/><br/>";// 4.检查数据库是否存在// echo "4/7 检测数据库开始...<br/>";$sql = "DROP TABLE IF EXISTS `dic_s_use`";mysqli_query($conn,$sql);// echo "4/7 检测数据库完成<br/><br/>";// 5.创建数据表  批量创建// echo "5/7 创建数据表开始...<br/>";// dic_s_use 表$sql = "CREATE TABLE `dic_s_use`  (`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',`s_use` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '特殊用法',`hospital_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构/医院代码',`status` enum('0','1') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1' COMMENT '状态:1=正常,0=禁用',PRIMARY KEY (`id`) USING BTREE) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '特殊用法' ROW_FORMAT = Dynamic";if (mysqli_query($conn,$sql)) {// echo "5/7 数据表[dic_s_use]创建成功<br/>";}else{// echo "5/7 数据表[dic_s_use]创建失败".mysqli_error($conn)."<br/>";return "5/7 数据表[dic_s_use]创建失败".mysqli_error($conn);}// 6.添加数据// echo "6/7 添加数据开始...<br/>";// dic_s_use 表$insert_use = "(null, '另煎', 'ceshi', '1'),(null, '先煎', 'ceshi', '1'),(null, '后下', 'ceshi', '1'),(null, '包煎', 'ceshi', '1'),(null, '烊化', 'ceshi', '1'),(null, '冲服', 'ceshi', '1'),(null, '煎服', 'ceshi', '1')";$sql = "INSERT INTO `dic_s_use` VALUES {$insert_use}";if (mysqli_query($conn,$sql)) {// echo "6/7 数据表[dic_s_use]数据导入成功<br/>";}else{// echo "6/7 数据表[dic_s_use]数据导入失败".mysqli_error($conn)."<br/>";return "6/7 数据表[dic_s_use]数据导入失败".mysqli_error($conn);}// 7.关闭连接// echo "7/7 数据库关闭连接开始...<br/>";mysqli_close($conn);// echo "7/7 数据库关闭连接完成<br/><br/><br/>";return '200';// echo "安装数据库完成<br/>";
}


http://www.ppmy.cn/news/1393424.html

相关文章

yolov6实现遥感影像目标识别|以DIOR数据集为例

1 目标检测是计算机视觉领域中的一项重要任务&#xff0c;它的目标是在图像或视频中检测出物体的位置和类别。YOLO&#xff08;You Only Look Once&#xff09;是一系列经典的目标检测算法&#xff0c;最初由Joseph Redmon等人于2016年提出。YOLO算法具有快速、简单、端到端的特…

医学生物化学与生物分子学试题及答案,分享几个实用搜题和学习工具 #知识分享#微信

在大学里&#xff0c;高效的学习工具可以帮助我们更好地管理时间和资源&#xff0c;提高学习效果。 1.快解题 这是一个网站 是一款服务于职业考证的考试搜题软件,拥有几千万不同考试医学考试题库和执业医师试题库,通过章节练习,模拟试题,历年真题等练习来让不同的用户学习和…

elementary OS7 Ubuntu 22.04中硬盘挂载报错

elementary OS7 Ubuntu 22.04中硬盘挂载报错 背景目标思路解决方法 背景 上周末安装elementaryos7的过程中将windows10的引导文件搞丢了&#xff0c;这两天准备修复一下&#xff0c;保险期间将固态硬盘上的文件备份到移动硬盘上&#xff0c;备份过程中出现报错的问题&#xff…

数据库及中表的创建和管理

目录 创建数据库 使用数据库(使用,查看信息) 修改数据库(删除,修改)

jenkins构建完成后部署到本机,无法读取容器外文件夹

项目背景&#xff1a; Dockerjenkins 构建完成后&#xff0c;要把打包的dist文件夹内容移动到网站目录 /www/wwwroot/xxxxxx 文件夹下&#xff1b;但是获取不到jenkins容器外的文件夹。 解决办法&#xff1a; 在容器中&#xff0c;添加挂载/映射本机目录&#xff0c;把网站…

【蓝桥杯-单片机】基于定时器的倒计时程序设计

基于定时器的倒计时程序 题目如下所示&#xff1a; 实现过程中遇到的一些问题 01 如何改变Seg_Buf数组的值数码管总是一致地显示0 1 2 3 4 5 首先这个问题不是在main.c中关于数码管显示部分的逻辑错误&#xff0c;就是发生在数码管的底层错误。 检查了逻辑部分&#xff…

fs-extra 抱错解决 TypeError: Cannot read property ‘native‘ of undefined

原来的写法&#xff0c;直接在最上面 import fs from fs-extra;在函数中&#xff0c;使用到的地方引入&#xff0c;修改为动态的 const fs await import("fs-extra");结果成功不抱错

HTML5+CSS3小实例:具有悬停效果的3D闪耀动画

实例:具有悬停效果的3D闪耀动画 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, init…