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
转载随意,但请附上文章地址:-)