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

一、前言

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

二、效果图

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

三、核心代码

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

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

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

② 要创建的表及表结构

③ 要初始化的数据

php 复制代码
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/>";
}
相关推荐
Rookie也要加油21 分钟前
01_SQLite
数据库·sqlite
liuxin3344556626 分钟前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
看山还是山,看水还是。1 小时前
MySQL 管理
数据库·笔记·mysql·adb
fishmemory7sec1 小时前
Koa2项目实战2(路由管理、项目结构优化)
数据库·mongodb·koa
momo小菜pa1 小时前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke2 小时前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
程序猿小D2 小时前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa
小宇成长录2 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
Eternal-Student2 小时前
everyday_question dq20240731
开发语言·arm开发·php
团儿.3 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构