##一、实验目的   1、掌握ThinkPHP5.0引导自动创建MySQL数据库。 ##二、实验内容   1、建立不同的ThinkPHP5.0不同页面,包括使用协议、环境监测、创建数据库等,设定创建MYSQL数据库的基本信息。   2、引导自动创建MYSQL数据库。 ##三、实验步骤及过程   微信后台需要与数据库交互,那么首先需要建立数据库,本次实验我们通过ThinkPHP5来创建数据库,省去了直接对MYSQL管理的步骤。我们借鉴并移植白俊遥的开源项目thinkphp-bjyadmin(基于ThinkPHP3的博客系统),书写了基于ThinkPHP5.0的版本。   1、创建博客数据库的界面   我们下载开源项目文件,并修改了入口文件为admin.PHP,系统访问(http://127.0.0.1/ThinkPHP/admin.php),系统将显示博客安装向导,包括1)使用协议;2)环境监测;3)创建数据;4)安装完成。图示如下所示。    ![](https://box.kancloud.cn/017329931c71b499995844630778f6c7_543x221.jpg)    ![](https://box.kancloud.cn/eb7c2763653a9ed55b52b19878d524b4_545x311.jpg)   ![](https://box.kancloud.cn/238d167107465eeb50bef64fdb4684df_545x236.jpg)   ![](https://box.kancloud.cn/b76d50e550f2752ac57553982a4590f5_553x101.jpg)   2、关键代码解析   admin.php为入口文件,即通过(http://127.0.0.1/ThinkPHP/admin.php)访问网站。   1)admin.php文件   在admin.php文件中,主要完成数据库是否安装,这是通过检测/public/install/install.lock文件是否存在,如果存在,则说明已经安装成功,否则将进入引导安装页面,进入public/install/index.php文件,admin.php具体核心代码如下所示。 ~~~ // 检测是否是新安装 if(file_exists("./Public/install") && !file_exists("./Public/install/install.lock")){ // 组装安装url $url=$_SERVER['HTTP_HOST'].trim($_SERVER['SCRIPT_NAME'],'admin.php').'public/install/index.php'; header("Location:http://$url"); die; } ~~~   2)public/install/index.php文件   该文件检测当前目录下是否有install.lock文件,如果没有这个文件,则进入安装引导页面;否则,提示已经安装过数据库,如果要重新安装,则需要删除/public/install/install.lock文件。   在后续的同意协议页面、监测环境页面、创建数据库页面,是通过$_GET()方法得到信息,然后进入相关的页面,即agreement.html、test.html、create.html和success.html文件。在create.html页面中,设置DB_HOST、DB_PORT、DB_USER和DB_PWD,通过post方法向public/install/index.php发送信息。public/install/index.php文件如下所示。 ~~~ <?php /** * 安装向导 */ header('Content-type:text/html;charset=utf-8'); // 检测是否安装过 if (file_exists('./install.lock')) { echo '你已经安装过该系统,重新安装需要先删除./Public/install/install.lock 文件'; die; } // 同意协议页面 if(@!isset($_GET['c']) || @$_GET['c']=='agreement'){ require './agreement.html'; } // 检测环境页面 if(@$_GET['c']=='test'){ require './test.html'; } // 创建数据库页面 if(@$_GET['c']=='create'){ require './create.html'; } // 安装成功页面 if(@$_GET['c']=='success'){ // 判断是否为post if($_SERVER['REQUEST_METHOD']=='POST'){ $data=$_POST; // 连接数据库 $link=@new mysqli("{$data['DB_HOST']}:{$data['DB_PORT']}",$data['DB_USER'],$data['DB_PWD']); // 获取错误信息 $error=$link->connect_error; if (!is_null($error)) { // 转义防止和alert中的引号冲突 $error=addslashes($error); die("<script>alert('数据库链接失败:$error');history.go(-1)</script>"); } // 设置字符集 $link->query("SET NAMES 'utf8'"); $link->server_info>5.0 or die("<script>alert('请将您的mysql升级到5.0以上');history.go(-1)</script>"); // 创建数据库并选中 if(!$link->select_db($data['DB_NAME'])){ $create_sql='CREATE DATABASE IF NOT EXISTS '.$data['DB_NAME'].' DEFAULT CHARACTER SET utf8;'; $link->query($create_sql) or die('创建数据库失败'); $link->select_db($data['DB_NAME']); } // 导入sql数据并创建表 $bjyblog_str=file_get_contents('./bjyblog.sql'); $sql_array=preg_split("/;[\r\n]+/", str_replace('bjy_',$data['DB_PREFIX'],$bjyblog_str)); foreach ($sql_array as $k => $v) { if (!empty($v)) { $link->query($v); } } $link->close(); $db_str=<<<php <?php return array( //*************************************数据库设置************************************* 'DB_TYPE' => 'mysqli', // 数据库类型 'DB_HOST' => '{$data['DB_HOST']}', // 服务器地址 'DB_NAME' => '{$data['DB_NAME']}', // 数据库名 'DB_USER' => '{$data['DB_USER']}', // 用户名 'DB_PWD' => '{$data['DB_PWD']}', // 密码 'DB_PORT' => '{$data['DB_PORT']}', // 端口 'DB_PREFIX' => '{$data['DB_PREFIX']}', // 数据库表前缀 ); php; // 创建数据库链接配置文件 file_put_contents('../../Application/Common/Conf/db.php', $db_str); @touch('./install.lock'); require './success.html'; } } ~~~ ##四、技术服务   1、如果有疑问或者需要帮助,请加入QQ群(群名称:豆豆咨询,群号:625686304);或者公众号douAsk,公众号名称为“豆豆咨询”。扫描以下二维码,关注“豆豆咨询”。 ![](https://box.kancloud.cn/541e0b698446c38ba398b183c361fe0d_430x430.jpg)   技术QQ群名称:豆豆咨询,群号:625686304   微信公众号名称:豆豆咨询,微信公众号:douAsk ###彩蛋号:1207(在公众号里输入彩蛋号即可得到源码)。