author:咔咔

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

首先创建俩个文件

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

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

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

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

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

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

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

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

is_writable()判断文件是否可以写入

fopen()打开一个文件

fwrite()将信息写进一个打开的文件中

我们在看看有没有写入

通过fwrite()就可以生成$config的配置信息

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

下来就是连接数据库创建表

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

 写sql文件

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

 下来就开始将文件写入数据库

由于myqli_query()不支持多条同时插入,所以我们就需要使用循环来插入数据库

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

我们可以看看数据库

创建的数据库和自定义的表就ok了

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

我们就以install.lock为判断点,当这个文件存在时,就需要在进行安装,直接跳转到您已经安装过的页面

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

那么这个文件就在数据库导 成功之后创建

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

 我们在安装一次,ok

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

这个功能最复杂的就是数据库的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 "您没有权限操作。";
}