zoukankan      html  css  js  c++  java
  • php通用安装程序,导入数据文件(.sql)的安装程序


    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 "
    
    
    <pre>
    +-------------+-------------+-------------+
                安装完成。... 
    </pre>
    
    
    
    <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操作权限。错误信息: 
    ".mysql_error() ); 
    
        // 重新建立新数据库
        mysql_query( "CREATE DATABASE {$dbname} CHARACTER SET ".DB_CHARSET." ;" ) or die ( "无法创建数据库, 请检查mysql操作权限。错误信息: 
    ".mysql_error() ); 
    
        // 选择数据库
        mysql_select_db($dbname,$conn) or die( "连接数据库名 {$dbname} 错误:
    ".mysql_error() );
    
    
        /* ############ 数据文件分段执行 ######### */
        $sql_str = file_get_contents( $sql_file );
        $piece = array(  ); // 数据段
        preg_match_all( "@([sS]+?;)h*[
    
    ]@" , $sql_str , $piece ); // 数据以分号;
    
    换行  为分段标记
        !empty( $piece[1] ) && $piece = $piece[1];
        $count = count($piece);
        if ( $count <= 0 ) {
            exit( 'mysql数据文件: '. $sql_file .' , 不是正确的数据文件. 请检查安装包.' );
        }
    
        $tb_list = array(  ); // 表名列表
        preg_match_all( '@CREATEh+TABLEh+[`]?([^`]+)[`]?@' , $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;  200px;'>创建表: ".$tb_list[ $i ]. '</span>';
                if($result){
                    echo " <font color='green'>成功</font> ......";
                }
                else {
                    echo " <font color='red'>失败</font> , 原因:".mysql_error();
                }
                echo "<br />
    ";
            }
            // 执行其它语句
            else {
                if(!$result){
                    echo "
    <br /> sql语句执行<font color='red'>失败</font> , 原因:".mysql_error();
                }
            }
        }
        
    }
    
    ?>
    View Code

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


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

  • 相关阅读:
    资源限制
    垃圾收集器
    GC日志
    happens-before
    maven相互依赖导致无法编译成功
    LVM-逻辑卷常用命令和示意图
    取消RAID5
    扩展RAID5的容量
    模拟RAID5损坏
    创建RAID5
  • 原文地址:https://www.cnblogs.com/wangqishu/p/3445751.html
Copyright © 2011-2022 走看看