【PHP】全自动安装数据库,不需要手动导入

版权声明:咔咔 来自https://blog.csdn.net/fangkang7 https://blog.csdn.net/fangkang7/article/details/84327550

author:咔咔

wechat:fangkangfk

用了很多的自动安装数据库的项目了,今天也来写一个,只是一个简单版本,可以按照这个思路来创建适合自己项目的安装数据库

源码地址问价:

https://download.csdn.net/download/fangkang7/10799886

首先创建俩个文件

doAction.php用来写入数据库信息和创建数据库操作

dbconfig.php用来存储数据库信息

我们可以先看看数据库配置的写法,这里没有使用return

下来我们开始在obaction.php生成数据库配置信息

这里有三个函数,简单的解释一下

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 "您没有权限操作。";
    }


猜你喜欢

转载自blog.csdn.net/fangkang7/article/details/84327550
今日推荐