PHPはsqlデータベースファイルをライブラリに書き込む

2249 ワード

/     
        $sqldata=file_get_contents(APP_PATH . 'install/data/mysql.sql');
        $sqlFormat = $this->sql_split($sqldata, $dbpre);//$dbpre       :yy_ 、tp_ 
        //    sql           
/**
         *   SQL  
         */
        $counts = count($sqlFormat);
        $n = intval($n);
        for ($i = 0; $i < $counts; $i++) {
            $sql = trim($sqlFormat[$i]);
            if (strstr($sql, 'CREATE TABLE')) {
                preg_match('/CREATE TABLE `([^ ]*)`/', $sql, $matches);
                mysqli_query($conn,"DROP TABLE IF EXISTS `$matches[1]");
                $ret = mysqli_query($conn,$sql);
                if ($ret) {
                    $message = '
  • ' . $matches[1] . ', !'.date('Y-m-d H:i:s').'
  • '; } else { $message = '
  • ' . $matches[1] . ', !'.date('Y-m-d H:i:s').'
  • '; } } else { if(trim($sql) == '') continue; $ret = mysqli_query($conn,$sql); } }
    function sql_split($sql, $tablepre) {
        if ($tablepre != "yy_")
            $sql = str_replace("yy_", $tablepre, $sql);
    
        $sql = preg_replace("/TYPE=(InnoDB|MyISAM|MEMORY)( DEFAULT CHARSET=[^; ]+)?/", "ENGINE=\\1 DEFAULT CHARSET=utf8", $sql);
    
        $sql = str_replace("\r", "
    ", $sql); $ret = array(); $num = 0; $queriesarray = explode(";
    ", trim($sql)); unset($sql); foreach ($queriesarray as $query) { $ret[$num] = ''; $queries = explode("
    ", trim($query)); $queries = array_filter($queries); foreach ($queries as $query) { $str1 = substr($query, 0, 1); if ($str1 != '#' && $str1 != '-') $ret[$num] .= $query; } $num++; } return $ret; }