Exemplo n.º 1
0
include JIEQI_ROOT_PATH . '/configs/modules.php';
if (is_array($_POST['mod_name']) && count($_POST['mod_name']) > 0) {
    foreach ($_POST['mod_name'] as $v) {
        if (file_exists($sql_dir . '/' . $v . '/struct.sql') && file_exists($sql_dir . '/' . $v . '/data.sql')) {
            if (!isset($jieqiModules[$v])) {
                $jieqiModules[$v] = array('caption' => $v, 'dir' => '', 'path' => '', 'url' => '', 'theme' => '', 'publish' => '1');
                $upmodules = true;
            } elseif ($jieqiModules[$v]['publish'] <= 0) {
                $jieqiModules[$v]['publish'] = 1;
                $upmodules = true;
            }
            $file_content = jieqi_readfile($sql_dir . '/' . $v . '/struct.sql');
            $file_content .= jieqi_readfile($sql_dir . '/' . $v . '/data.sql');
            //...
            $sqlary = array();
            jieqi_splitsqlfile($sqlary, preg_replace(array('/DROP\\s+TABLE\\s+IF\\s+EXISTS\\s+`?jieqi_([a-z1-9_]+)`?\\s*;/isU', '/TABLE\\s+`?jieqi_([a-z1-9_]+)`?(;|\\s)/isU', '/INSERT\\s+INTO\\s+`?jieqi_([a-z1-9_]+)`?(;|\\s)/isU', '/UPDATE\\s+`?jieqi_([a-z1-9_]+)`?(;|\\s)/isU'), array('DROP TABLE IF EXISTS `' . JIEQI_DB_PREFIX . '_\\1`;', 'TABLE `' . JIEQI_DB_PREFIX . '_\\1`\\2', 'INSERT INTO `' . JIEQI_DB_PREFIX . '_\\1`\\2', 'UPDATE `' . JIEQI_DB_PREFIX . '_\\1`\\2'), $file_content));
            $sqlerr = array();
            foreach ($sqlary as $v) {
                $v = trim($v);
                if (!empty($v) and strlen($v) > 5) {
                    if ($mysql_version > '4.1') {
                        if (preg_match('/^\\s*CREATE\\s+TABLE/is', $v)) {
                            $v = str_replace(array('TYPE=MyISAM', 'TYPE=HEAP'), array('ENGINE=MyISAM DEFAULT CHARSET=' . JIEQI_DB_CHARSET, 'TYPE=MEMORY DEFAULT CHARSET=' . JIEQI_DB_CHARSET), $v);
                        }
                    }
                    $retflag = $db_query->execute($v);
                    if (!$retflag) {
                        $sqlerr[] = array('sql' => $v, 'error' => $db_query->db->error());
                        //显示错误
                        $jieqiTpl->assign('status', 0);
                        $jieqiTpl->assign('step_content', sprintf($jieqiLang[JIEQI_MODULE_NAME]['print_sql_error'], jieqi_htmlstr($v), jieqi_htmlstr($db_query->db->error())));
Exemplo n.º 2
0
 if (empty($errtext)) {
     $db_query = JieqiQueryHandler::getInstance('JieqiQueryHandler');
     $sqlfilearray = jieqi_getfilesarray($filename);
     if (is_array($sqlfilearray) && count($sqlfilearray) > 0) {
         //处理压缩SQL的情况
         /*anchor:28
         		if('.zip'===substr($sqlfilearray[0], strpos($sqlfilearray[0], '.'))){
         			//exit;
         		}
         		*/
         //开始导入SQL
         foreach ($sqlfilearray as $v) {
             $sqlfilecontent = jieqi_readfile(MYSQL_BACKUP_PATH . '/' . $v);
             $sqlary = array();
             $sqlerr = array();
             jieqi_splitsqlfile($sqlary, str_replace(' jieqi', ' ' . JIEQI_DB_PREFIX, $sqlfilecontent));
             foreach ($sqlary as $s) {
                 $s = trim($s);
                 if (!empty($s) and strlen($s) > 5) {
                     $retflag = $db_query->execute(jieqi_syntablestruct($s, MYSQL_SERVER_INFO > '4.1', JIEQI_DB_CHARSET));
                     if (!$retflag) {
                         $sqlerr[] = array('sql' => $s, 'error' => $db_query->db->error());
                         //显示错误
                         jieqi_printfail(sprintf($jieqiLang[JIEQI_MODULE_NAME]['print_sql_error'], jieqi_htmlstr($s), jieqi_htmlstr($db_query->db->error())));
                         break;
                     }
                 }
             }
         }
         //处理成功跳转
         jieqi_jumppage('dbmanage.php?option=import', LANG_DO_SUCCESS, $jieqiLang[JIEQI_MODULE_NAME]['import_mysql_success']);
Exemplo n.º 3
0
jieqi_loadlang('database', JIEQI_MODULE_NAME);
if ($jieqiUsersStatus != JIEQI_GROUP_ADMIN) {
    jieqi_printfail(LANG_NEED_ADMIN);
}
@set_time_limit(3600);
@session_write_close();
include_once JIEQI_ROOT_PATH . '/admin/header.php';
if (isset($_POST['action']) && $_POST['action'] == 'execute') {
    if (empty($_POST['sqldata'])) {
        jieqi_printfail($jieqiLang['system']['need_sql_data']);
    } elseif (preg_match('/(into\\s+outfile|load_file\\s*\\([^\\)]*\\)|load\\s+data)/is', $_POST['sqldata'])) {
        jieqi_printfail($jieqiLang['system']['deny_sql_data']);
    }
    jieqi_includedb();
    $db_query = JieqiQueryHandler::getInstance('JieqiQueryHandler');
    jieqi_splitsqlfile($sqlary, str_replace(' jieqi_', ' ' . JIEQI_DB_PREFIX . '_', $_POST['sqldata']));
    $sqlerr = array();
    foreach ($sqlary as $v) {
        $v = trim($v);
        if (!empty($v) and strlen($v) > 5) {
            $retflag = $db_query->execute($v);
            if (!$retflag) {
                $sqlerr[] = array('sql' => $v, 'error' => $db_query->db->error());
                if ($_POST['errorstop']) {
                    jieqi_printfail(sprintf($jieqiLang['system']['print_sql_error'], jieqi_htmlstr($v), jieqi_htmlstr($db_query->db->error())));
                    break;
                }
            }
        }
    }
    if (!empty($sqlerr) && $_POST['showerror']) {