如何通過PHP安裝數(shù)據(jù)庫并使數(shù)據(jù)初始化
一、前言
有些CMS在部署的時候不用使用數(shù)據(jù)庫工具,而是通過數(shù)據(jù)庫安裝頁面就能完成數(shù)據(jù)庫創(chuàng)建和數(shù)據(jù)填充,所以自己就想動手做一個這樣的功能,這樣在給別人安裝系統(tǒng)的時候就不用再那么麻煩了,直接一鍵安裝解決了。
二、效果圖
輸入數(shù)據(jù)庫相關(guān)信息后,點擊安裝并有不同的提示。

三、核心代碼
原理:其實就是通過構(gòu)建原生SQL來創(chuàng)建并初始化數(shù)據(jù)庫,連接數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫、使用數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)表、新增數(shù)據(jù)、關(guān)閉連接。
創(chuàng)建前首先要準(zhǔn)備以下內(nèi)容:
① 準(zhǔn)備數(shù)據(jù)庫的基本信息:數(shù)據(jù)庫地址、數(shù)據(jù)庫名稱、用戶名、密碼
② 要創(chuàng)建的表及表結(jié)構(gòu)
③ 要初始化的數(shù)據(jù)
public function createDb($data)
{
$host = $data['mysqlHostname'];
$user = $data['mysqlUsername'];
$pwd = $data['mysqlPassword'];
$db = $data['mysqlDatabase'];
// 1.連接數(shù)據(jù)庫
$conn = mysqli_connect($host, $user, $pwd);
if (!$conn) {
// echo "1/7 數(shù)據(jù)庫連接失敗<br/><br/>";
return '1/7 數(shù)據(jù)庫連接失敗';
}else{
// echo "1/7 數(shù)據(jù)庫連接完成<br/><br/>";
}
// 2.創(chuàng)建數(shù)據(jù)庫
// 先刪除再創(chuàng)建
$sql = "DROP DATABASE {$db}";
if (mysqli_query($conn, $sql)) {
// echo "2/7 數(shù)據(jù)庫刪除完成<br/>";
}else{
// echo "2/7". mysqli_error($conn)."<br/><br/>";
// return "2/7 ".mysqli_error($conn);
}
// 創(chuàng)建
$sql = "create database {$db}";
if (mysqli_query($conn, $sql)) {
// echo "2/7 數(shù)據(jù)庫創(chuàng)建完成<br/>";
}else{
// echo "2/7". mysqli_error($conn)."<br/><br/>";
return "2/7 ".mysqli_error($conn);
}
// 3.使用數(shù)據(jù)表
// echo "3/7 選擇數(shù)據(jù)庫開始...<br/>";
$sql = "use {$db}";
mysqli_query($conn,$sql);
// echo "3/7 選擇數(shù)據(jù)庫完成<br/><br/>";
// 4.檢查數(shù)據(jù)庫是否存在
// echo "4/7 檢測數(shù)據(jù)庫開始...<br/>";
$sql = "DROP TABLE IF EXISTS `dic_s_use`";
mysqli_query($conn,$sql);
// echo "4/7 檢測數(shù)據(jù)庫完成<br/><br/>";
// 5.創(chuàng)建數(shù)據(jù)表 批量創(chuàng)建
// echo "5/7 創(chuàng)建數(shù)據(jù)表開始...<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 '機(jī)構(gòu)/醫(yī)院代碼',
`status` enum('0','1') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1' COMMENT '狀態(tài):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 數(shù)據(jù)表[dic_s_use]創(chuàng)建成功<br/>";
}else{
// echo "5/7 數(shù)據(jù)表[dic_s_use]創(chuàng)建失敗".mysqli_error($conn)."<br/>";
return "5/7 數(shù)據(jù)表[dic_s_use]創(chuàng)建失敗".mysqli_error($conn);
}
// 6.添加數(shù)據(jù)
// echo "6/7 添加數(shù)據(jù)開始...<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 數(shù)據(jù)表[dic_s_use]數(shù)據(jù)導(dǎo)入成功<br/>";
}else{
// echo "6/7 數(shù)據(jù)表[dic_s_use]數(shù)據(jù)導(dǎo)入失敗".mysqli_error($conn)."<br/>";
return "6/7 數(shù)據(jù)表[dic_s_use]數(shù)據(jù)導(dǎo)入失敗".mysqli_error($conn);
}
// 7.關(guān)閉連接
// echo "7/7 數(shù)據(jù)庫關(guān)閉連接開始...<br/>";
mysqli_close($conn);
// echo "7/7 數(shù)據(jù)庫關(guān)閉連接完成<br/><br/><br/>";
return '200';
// echo "安裝數(shù)據(jù)庫完成<br/>";
}到此這篇關(guān)于通過PHP安裝數(shù)據(jù)庫并使數(shù)據(jù)初始化的文章就介紹到這了,更多相關(guān)PHP數(shù)據(jù)初始化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
php設(shè)計模式之工廠模式用法經(jīng)典實例分析
這篇文章主要介紹了php設(shè)計模式之工廠模式用法,結(jié)合具體實例形式分析了php工廠模式相關(guān)原理、定義、用法及操作注意事項,需要的朋友可以參考下2019-09-09
php操縱mysqli數(shù)據(jù)庫的實現(xiàn)方法
下面小編就為大家?guī)硪黄猵hp操縱mysqli數(shù)據(jù)庫的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
怎樣給PHP源代碼加密?PHP二進(jìn)制加密與解密的解決辦法
本篇文章小編為大家介紹,怎樣給PHP源代碼加密?PHP二進(jìn)制加密與解密的解決辦法。需要的朋友參考下2013-04-04

