php通用安装程序,导入数据文件(.sql)的安装程序

该程序只需要1个php文件 和 1个数据文件,很方便调用.
install/index.php         程序文件
install/mycms.sql        要导入的mysql数据文件( .sql文件)

本通用程序可以正确导入各种编码的数据文件 ,默认utf8,如果要换其它的,修改DB_CHARSET  常量即可。
本通用程序尚未处理  表前缀 事宜。

效果截图:( ui引用某商城的安装界面, 程序代码原创 )

主要程序代码如下:

<?php
!defined( 'DB_CHARSET' ) && define( 'DB_CHARSET' , 'utf8' );// 数据库保存编码, 不可缺少
header( 'Content-Type:text/html; charset=utf-8' ); // 本程序执行编码 // 显示填写mysql信息的表单 , 并停止
if ( !isset( $_POST['dbinfo'] ) ) {
include 'install_form.html';
exit;
} // 提交表单后, 获得mysql账号信息
$db = array( );
$data = $_POST['dbinfo'];
$db['host'] = $data['dbhost'];
$db['dbname'] = $data['dbname'];
$db['user'] = $data['dbuser'];
$db['pwd'] = $data['dbpw']; // 导入数据文件
$sql_file = dirname(__FILE__)."/mycms.sql";
run_sql_file( $sql_file , $db ); // 生成已安装文件
file_put_contents( '../install_lock' , '' ); // 安装完成 , 跳转回首页
echo "
\n\r<pre>
+-------------+-------------+-------------+
安装完成。...
</pre>
\n\r <meta http-equiv='refresh' content='2;url=../index.php' />
"; /* 执行mysql数据文件. 参数: 数据文件 , 数据库账号信息 */
function run_sql_file( $sql_file , $dbconfig ) {
$host = $dbconfig['host'] ;
$dbname = $dbconfig['dbname'] ;
$user = $dbconfig['user'] ;
$pwd = $dbconfig['pwd'] ; // 连接mysql数据库
$conn = mysql_connect($host,$user,$pwd) or die( '连接mysql错误:'.mysql_error() ); // 删除旧的数据库
mysql_query( "DROP database IF EXISTS {$dbname} ;" ) or die ( "重新建立新的数据库 操作失败,无法删除【旧】数据库, 请检查mysql操作权限。错误信息: \n".mysql_error() ); // 重新建立新数据库
mysql_query( "CREATE DATABASE {$dbname} CHARACTER SET ".DB_CHARSET." ;" ) or die ( "无法创建数据库, 请检查mysql操作权限。错误信息: \n".mysql_error() ); // 选择数据库
mysql_select_db($dbname,$conn) or die( "连接数据库名 {$dbname} 错误:\n".mysql_error() ); /* ############ 数据文件分段执行 ######### */
$sql_str = file_get_contents( $sql_file );
$piece = array( ); // 数据段
preg_match_all( "@([\s\S]+?;)\h*[\n\r]@" , $sql_str , $piece ); // 数据以分号;\n\r换行 为分段标记
!empty( $piece[1] ) && $piece = $piece[1];
$count = count($piece);
if ( $count <= 0 ) {
exit( 'mysql数据文件: '. $sql_file .' , 不是正确的数据文件. 请检查安装包.' );
} $tb_list = array( ); // 表名列表
preg_match_all( '@CREATE\h+TABLE\h+[`]?([^`]+)[`]?@' , $sql_str , $tb_list );
!empty( $tb_list[1] ) && $tb_list = $tb_list[1];
$tb_count = count( $tb_list ); // 开始循环执行
for($i=0;$i<$count ;$i++){ $sql = $piece[$i] ;
mysql_query("SET character_set_connection='".DB_CHARSET."', character_set_results='".DB_CHARSET."', character_set_client='binary'");
$result = mysql_query($sql); // 建表数量
if ( $i < $tb_count ) {
echo "<span style='display: inline-block; width: 200px;'>创建表: ".$tb_list[ $i ]. '</span>';
if($result){
echo " <font color='green'>成功</font> ......";
}
else {
echo " <font color='red'>失败</font> , 原因:".mysql_error();
}
echo "<br />\n";
}
// 执行其它语句
else {
if(!$result){
echo "\n<br /> sql语句执行<font color='red'>失败</font> , 原因:".mysql_error();
}
}
} } ?>

完整的安装程序压缩包 下载:http://files.cnblogs.com/wangqishu/mycms_install.rar

单独使用方法:
把你的mysql数据文件,如test.sql 放到install目录下,修改它在index.php里面的文件名 即可。

php通用安装程序,导入数据文件(.sql)的安装程序的更多相关文章

  1. 用代码从文件中导入数据到SQL Server

    引言 导入数据到SQL Server 是常见的需求,特别是定期导入这种需求. 对于定期导入主要有以下几种方式可选择: Bulk Insert Bcp Utility OpenRowSet 写程序导入( ...

  2. Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”

    从Excel导入数据到Sql server 时,由于表中的数据有的很长,导入时出现如下错误(如果数据不是很长,255内以内,则不会出现错误): 出错原因: SQL Server的导入导出为了确定数据表 ...

  3. Postman系列四:Postman接口请求设置环境变量和全局变量、测试沙箱和测试断言、测试集运行与导入数据文件

    一:Postman中接口请求设置环境变量和全局变量 全局变量和环境变量可以通过Pre-request Script和Tests设置,会在下面测试沙箱和测试断言中讲到. 全局变量的设置:官网参考http ...

  4. 选择“保留window设置、个人文件及应用”或者“升级安装windows并保留文件设置和应用程序”的 处理干净以后用ghost备份

    个人经验 第一次装好以后 把所有常用软件什么的 还有系统的更新全部装好 删去乱七八糟的临时文件啊什么的 处理干净以后用ghost备份下次需要重装直接从ghost镜像恢复 然后更新软件 打补丁 再备份 ...

  5. SQLLoader7(只导入数据文件的其中几行记录)

    数据文件: D:\oracletest\test1.txt SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN ...

  6. 用nodepad++生成导入数据的SQL

    在工作中经常要往数据库里导入数据,如果是在本地,可以用SQL SERVER自带的工具 直接往表里导入或者 用ssis 导入 线上的数据库由dba负责,作为开发不能直接操作,需要程序员来生成sql语句, ...

  7. 安装配置elasticsearch、安装elasticsearch-analysis-ik插件、mysql导入数据到elasticsearch、安装yii2-elasticsearch及使用

    一.安装elasticsearch 获取elasticsearch的rpm:wget https://download.elastic.co/elasticsearch/release/org/ela ...

  8. EXCEL导入数据到SQL SERVER 2008

    项目中需要导入excel到SQL SERVER数据库 总是报截断, 本质问题是,SQL SERVER导入程序是根据EXCEL的第一行记录 (非标题行)来决定数据长度的 碰到这个问题,可以伪造第一行,然 ...

  9. vs2008/2010安装无法打开数据文件解决方案

    本人在安装VS2008或2010时,在开始的第一个页面(进度条大约加载到75%左右),提示“无法打开数据文件 'C:/Documents and Settings/Administrator/Loca ...

随机推荐

  1. hadoop2.0初识1.1

    1.伪分布式hdfs文件系统的搭建(单节点文件系统) 1.1.根据上节的讲解,配置主机映射.jdk和解压hadoop压缩包 1.2.配置namenode 在/opt/modules/hadoop-2. ...

  2. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的连接恢复和命令拦截

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第四篇:MVC程序中实体框架的连接恢复和 ...

  3. 程序源系统与当前系统不一致:Carry out repairs in non-original systems only if urgent

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. java使用split切割字符串的时候,注意转义字符

    今天在做项目的时候发现一个奇怪的问题 File file = new File("d:\\a.txt"); BufferedReader br = new BufferedRead ...

  5. iOS - Apache Tomcat WebServer 服务器配置

    前言 提前下载好相关软件,且安装目录最好安装在全英文路径下.如果路径有中文名,那么可能会出现一些莫名其妙的问题. 提前准备好的软件: apache-tomcat-6.0.45.tar.gz eclip ...

  6. Setup Factory Error3014

    在用Setup Factory打包软件的时候出现Error3014 一般都是由于软件冲突引起的 我的问题是由于杀毒软件 ,在打包的时候关闭杀毒软件 就能成功打包了.

  7. Android SharePreference 在主进程和次进程间共享数据不同步出错

      SharedPreference作为android五大存储(网络,数据库,文件,SharedPreference,contentProvider)之中最方便使用的一个,从类名上来看就不是一个存储大 ...

  8. 《Java虚拟机并发编程》学习笔记

    对<Java虚拟机并发编程>这本书真的是相见恨晚.以前对并发编程只是懂个皮毛,这本书让我对并发编程有了一个全新的认识.所以把书上的知识点做下笔记,以便以后复习使用. 并发与并行 仔细说来, ...

  9. 读javascript高级程序设计16-几条函数小技巧

    内容概要 作用域安全的构造函数 惰性载入函数 函数绑定 函数节流 一.作用域安全的构造函数 我们知道,当使用new操作符调用构造函数时,构造函数内部的this会指向新创建对象的实例. function ...

  10. C# 跨线程调用控件

    在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线程间操作无效 第一种办法:禁 ...