author:咔咔php
wechat:fangkangfknode
用了不少的自動安裝數據庫的項目了,今天也來寫一個,只是一個簡單版本,能夠按照這個思路來建立適合本身項目的安裝數據庫mysql
源碼地址問價:sql
https://download.csdn.net/download/fangkang7/10799886數據庫
首先建立倆個文件函數
doAction.php用來寫入數據庫信息和建立數據庫操做url
dbconfig.php用來存儲數據庫信息.net
咱們能夠先看看數據庫配置的寫法,這裏沒有使用returncode
下來咱們開始在obaction.php生成數據庫配置信息ip
這裏有三個函數,簡單的解釋一下
is_writable()判斷文件是否能夠寫入
fopen()打開一個文件
fwrite()將信息寫進一個打開的文件中
咱們在看看有沒有寫入
經過fwrite()就能夠生成$config的配置信息
下來就是鏈接數據庫建立表
寫sql文件
下來就開始將文件寫入數據庫
因爲myqli_query()不支持多條同時插入,因此咱們就須要使用循環來插入數據庫
咱們能夠看看數據庫
建立的數據庫和自定義的表就ok了
咱們就以install.lock爲判斷點,當這個文件存在時,就須要在進行安裝,直接跳轉到您已經安裝過的頁面
那麼這個文件就在數據庫導 成功以後建立
咱們在安裝一次,ok
這個功能最複雜的就是數據庫的sql文件寫入,其餘的按照本身的項目需求來寫便可
來一份源碼:
<?php $filename="dbconfig.php"; $fileLock = 'install.lock'; //配置文件內容 $config='<?php'; $config.="\n"; $config.='$host="'.$_POST["host"].'";'; $config.="\n"; $config.='$user="'.$_POST["username"].'";'; $config.="\n"; $config.='$pass="'.$_POST["password"].'";'; $config.="\n"; $config.='$dbname="'.$_POST["dbname"].'";'; $config.="\n"; $config.='$flag="'.$_POST["flag"].'";'; $config.="\n"; $config.="?>"; if(file_exists($fileLock)){ echo "<script>window.location='ok.php';</script>"; die; } if(is_writable($filename)){//檢測是否有權限可寫 $handle=fopen($filename, "w+"); fwrite($handle, $config); // //鏈接數據庫 include_once($filename); if(!@$link=mysqli_connect($host,$user,$pass)){ echo "數據庫鏈接失敗,<a href='install.php'>返回設置</a>"; }else{ mysqli_query($link,"create database if not exists `$dbname`"); mysqli_select_db($link,$dbname); //建表語句 $sql[]="CREATE TABLE IF NOT EXISTS `".$flag."access` ( `role_id` smallint(6) unsigned NOT NULL, `node_id` smallint(6) unsigned NOT NULL, `level` tinyint(1) NOT NULL, `module` varchar(50) DEFAULT NULL, KEY `groupId` (`role_id`), KEY `nodeId` (`node_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8"; $sql[]="CREATE TABLE IF NOT EXISTS `".$flag."node` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `title` varchar(50) DEFAULT NULL, `status` tinyint(1) DEFAULT '0', `remark` varchar(255) DEFAULT NULL, `sort` smallint(6) unsigned DEFAULT NULL, `pid` smallint(6) unsigned NOT NULL, `level` tinyint(1) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `level` (`level`), KEY `pid` (`pid`), KEY `status` (`status`), KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8"; $sql[]="CREATE TABLE IF NOT EXISTS `".$flag."role` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `pid` smallint(6) DEFAULT NULL, `status` tinyint(1) unsigned DEFAULT NULL, `remark` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `pid` (`pid`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8"; $sql[]="CREATE TABLE IF NOT EXISTS `".$flag."role_user` ( `role_id` mediumint(9) unsigned DEFAULT NULL, `user_id` char(32) DEFAULT NULL, KEY `group_id` (`role_id`), KEY `user_id` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8"; foreach ($sql as $value) { mysqli_query($link,$value); } echo "<script>window.location='index.php';</script>"; $myfile = fopen("install.lock", "w"); } }else{ echo "您沒有權限操做。"; }