【PHP】全自動安裝數據庫,不須要手動導入

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 "您沒有權限操做。";
    }
相關文章
相關標籤/搜索