Beispiel #1
0
function bak()
{
    global $db;
    $fpath = "bak/" . date('Ymd', time()) . "_" . getRndStr(10);
    $sql = "";
    $p = 1;
    $tables = "{pre}art_topic,{pre}art_type,{pre}comment,{pre}gbook,{pre}link,{pre}mood,{pre}user,{pre}user_card,{pre}user_group,{pre}user_visit,{pre}vod_topic,{pre}vod_type,{pre}art,{pre}vod";
    $tables = replaceStr($tables, "{pre}", app_tablepre);
    $tablearr = explode(",", $tables);
    foreach ($tablearr as $table) {
        $sql .= make_header($table);
        $rsfield = $db->getTableFields(app_dbname, $table);
        $i = 0;
        while ($rowfield = mysql_fetch_field($rsfield)) {
            $fs[$i] = trim($rowfield->name);
            $i++;
        }
        unset($rsfield);
        $fsd = $i - 1;
        $nums = $db->getOne("select count(*) from {$table}");
        $pagecount = 1;
        if ($nums > 1000) {
            $pagecount = ceil($nums / 1000);
        }
        for ($n = 1; $n <= $pagecount; $n++) {
            $rsdata = $db->getAll("select * from {$table} limit " . 1000 * ($n - 1) . ",1000");
            $rscount = count($rsdata);
            $intable = "INSERT INTO `{$table}` VALUES(";
            for ($j = 0; $j < $rscount; $j++) {
                $line = $intable;
                for ($k = 0; $k <= $fsd; $k++) {
                    if ($k < $fsd) {
                        $line .= "'" . mysql_escape_string($rsdata[$j][$fs[$k]]) . "',";
                    } else {
                        $line .= "'" . mysql_escape_string($rsdata[$j][$fs[$k]]) . "');\r\n";
                    }
                }
                $sql .= $line;
                if (strlen($sql) >= 2000000) {
                    $fname = $fpath . "-" . $p . ".sql";
                    fwrite(fopen($fname, "wb"), $sql);
                    $p++;
                    $sql = "";
                }
            }
            unset($rsdata);
        }
        unset($fs);
    }
    $sql .= make_manager(replaceStr("{pre}manager", "{pre}", app_tablepre));
    $fname = $fpath . "-" . $p . ".sql";
    fwrite(fopen($fname, "wb"), $sql);
    echo "备份成功";
}
Beispiel #2
0
            $rscount = count($rsdata);
            $intable = 'INSERT INTO ' . $table . ' VALUES(';
            for ($j = 0; $j < $rscount; $j++) {
                $line = $intable;
                for ($k = 0; $k <= $fsd; $k++) {
                    if ($k < $fsd) {
                        $line .= "'" . mysql_escape_string($rsdata[$j][$fs[$k]]) . "',";
                    } else {
                        $line .= "'" . mysql_escape_string($rsdata[$j][$fs[$k]]) . "');\r\n";
                    }
                }
                $sql .= $line;
                if (strlen($sql) >= 1500000) {
                    $fname = $fpath . '-' . $p . '.sql';
                    fwrite(fopen($fname, 'wb'), $sql);
                    $p++;
                    unset($sql);
                }
            }
            unset($rsdata);
        }
        unset($fs);
    }
    unset($tablearr);
    $sql .= make_manager(str_replace('{pre}', $GLOBALS['MAC']['db']['tablepre'], '{pre}manager'));
    $fname = $fpath . '-' . $p . '.sql';
    fwrite(fopen($fname, 'wb'), $sql);
    showMsg('备份成功', '?m=db-list');
} else {
    showErr('System', '未找到指定系统模块');
}