首页 > php代码 > php 数据库在线备份代码

php 数据库在线备份代码

<?php
function sqldumptable($table, $fp = 0) {
    $tabledump = "DROP TABLE IF EXISTS $table;n";
    $tabledump.= "CREATE TABLE $table (n";
    $firstfield = 1;
    $fields = mysql_query("SHOW FIELDS FROM $table");
    while ($field = mysql_fetch_array($fields)) {
        if (!$firstfield) {
            $tabledump.= ",n";
        } else {
            $firstfield = 0;
        }
        $tabledump.= "   $field[Field] $field[Type]";
        if (!empty($field["Default"])) {
            $tabledump.= " DEFAULT '$field[Default]'";
        }
        if ($field['Null'] != "YES") {
            $tabledump.= " NOT NULL";
        }
        if ($field['Extra'] != "") {
            $tabledump.= " $field[Extra]";
        }
    }
    mysql_free_result($fields);
    $keys = mysql_query("SHOW KEYS FROM $table");
    while ($key = mysql_fetch_array($keys)) {
        $kname = $key['Key_name'];
        if ($kname != "PRIMARY" and $key['Non_unique'] == 0) {
            $kname = "UNIQUE|$kname";
        }
        if (!is_array($index[$kname])) {
            $index[$kname] = array();
        }
        $index[$kname][] = $key['Column_name'];
    }
    mysql_free_result($keys);
    while (list($kname, $columns) = @each($index)) {
        $tabledump.= ",n";
        $colnames = implode($columns, ",");
        if ($kname == "PRIMARY") {
            $tabledump.= "   PRIMARY KEY ($colnames)";
        } else {
            if (substr($kname, 0, 6) == "UNIQUE") {
                $kname = substr($kname, 7);
            }
            $tabledump.= "   KEY $kname ($colnames)";
        }
    }
    $tabledump.= "n);nn";
    if ($fp) {
        fwrite($fp, $tabledump);
    } else {
        echo $tabledump;
    }
    $rows = mysql_query("SELECT * FROM $table");
    $numfields = mysql_num_fields($rows);
    while ($row = mysql_fetch_array($rows)) {
        $tabledump = "INSERT INTO $table VALUES(";
        $fieldcounter = - 1;
        $firstfield = 1;
        while (++$fieldcounter < $numfields) {
            if (!$firstfield) {
                $tabledump.= ", ";
            } else {
                $firstfield = 0;
            }
            if (!isset($row[$fieldcounter])) {
                $tabledump.= "NULL";
            } else {
                $tabledump.= "'" . mysql_escape_string($row[$fieldcounter]) . "'";
            }
        }
        $tabledump.= ");n";
        if ($fp) {
            fwrite($fp, $tabledump);
        } else {
            echo $tabledump;
        }
    }
    mysql_free_result($rows);
}
@mysql_connect($servername, $dbusername, $dbpassword) or die("数据库连接失败");
@mysql_select_db($dbname) or die("选择数据库失败");
$table = array_flip($_POST['table']);
$result = mysql_query("SHOW tables");
echo ($result) ? NULL : "出错: " . mysql_error();
$filename = basename($_SERVER['HTTP_HOST'] . "_MySQL.sql");
header('Content-type: application/unknown');
header('Content-Disposition: attachment; filename=' . $filename);
$mysqldata = '';
while ($currow = mysql_fetch_array($result)) {
    if (isset($table[$currow[0]])) {
        $mysqldata.= sqldumptable($currow[0]);
        $mysqldata.= $mysqldata . "rn";
    }
}
mysql_close();
exit;


本文地址:http://www.phprm.com/code/a25063b22faa3d7f0c2016fc29e7f46b.html

转载随意,但请附上文章地址:-)

标签:none

发表留言