程序功能:mysql数据库备份功能 作者: 唐小刚 说明:本程序主要是从mysqladmin中提取出来,并作出一定的调整,希望对大家在用php编 程时备份数据有定帮助. 如果不要备份结构:请屏掉这句://echo get_table_def($dbname, $table, $crlf). ";$crlf$crlf "; 如果不要备份内容:请屏掉这句:echo get_table_content($dbname, $table, $crlf);
<?php
/*
程序功能:mysql数据库备份功能
作者: 唐小刚
说明:本程序主要是从mysqladmin中提取出来,并作出一定的调整,希望对大家在用php编
程时备份数据有定帮助.
如果不要备份结构:请屏掉这句://echo get_table_def($dbname, $table, $crlf). ";$crlf$crlf ";
如果不要备份内容:请屏掉这句:echo get_table_content($dbname, $table, $crlf);
*/
header( "Content-disposition: filename=backup.sql ");//所保存的文件名
header( "Content-type: application/octetstream ");
header( "Pragma: no-cache ");
header( "Expires: 0 ");
//备份数据
$i = 0;
$crlf= "\r\n ";
$dbname= "数据库名 ";//数据库名
global $dbconn;
$dbconn = mysql_connect( "localhost ", "用户名 ", "密码 ");//数据库主机,用户名,密码
$db = mysql_select_db($dbname,$dbconn);
$tables = mysql_list_tables($dbname,$dbconn);
$num_tables = @mysql_numrows($tables);
while($i < $num_tables)
{
$table = mysql_tablename($tables, $i);
print $crlf;
print $crlf;
echo get_table_def($dbname, $table, $crlf). ";$crlf$crlf ";
echo get_table_content($dbname, $table, $crlf);
$i++;
}
//定义抽取表结构与数据
function get_table_def($db, $table, $crlf)
{
global $drop;
$schema_create = " ";
if(!empty($drop))
$schema_create .= "DROP TABLE IF EXISTS $table;$crlf ";
$schema_create .= "CREATE TABLE $table ($crlf ";
$result = mysql_db_query($db, "SHOW FIELDS FROM $table ");
while($row = mysql_fetch_array($result))
{
$schema_create .= " $row[Field] $row[Type] ";
if(isset($row[ "Default "]) && (!empty($row[ "Default "]) || $row[ "Default "] == "0 "))
$schema_create .= " DEFAULT '$row[Default] ' ";
if($row[ "Null "] != "YES ")
$schema_create .= " NOT NULL ";
if($row[ "Extra "] != " ")
$schema_create .= " $row[Extra] ";
$schema_create .= ",$crlf ";
}
$schema_create = ereg_replace( ", ".$crlf. "$ ", " ", $schema_create);
$result = mysql_db_query($db, "SHOW KEYS FROM $table ");
while($row = mysql_fetch_array($result))
{
$kname=$row[ 'Key_name '];
if(($kname != "PRIMARY ") && ($row[ 'Non_unique '] == 0))
$kname= "UNIQUE|$kname ";
if(!isset($index[$kname]))
$index[$kname] = array();
$index[$kname][] = $row[ 'Column_name '];
}
while(list($x, $columns) = @each($index))
{
$schema_create .= ",$crlf ";
if($x == "PRIMARY ")
$schema_create .= " PRIMARY KEY ( " . implode($columns, ", ") . ") ";
elseif (substr($x,0,6) == "UNIQUE ")
$schema_create .= " UNIQUE ".substr($x,7). " ( " . implode($columns, ", ") . ") ";
else
$schema_create .= " KEY $x ( " . implode($columns, ", ") . ") ";
}
$schema_create .= "$crlf) ";
return (stripslashes($schema_create));
}
//保存数据表的值
function get_table_content($db, $table, $crlf)
{
$schema_create = " ";
$temp = " ";
$result = mysql_db_query($db, "SELECT * FROM $table ");
$i = 0;
while($row = mysql_fetch_row($result))
{
$schema_insert = "INSERT INTO $table VALUES ( ";
for($j=0; $j <mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= " NULL, ";
elseif($row[$j] != " ")
$schema_insert .= " ' ".addslashes($row[$j]). " ', ";
else
$schema_insert .= " ' ', ";
}
$schema_insert = ereg_replace( ",$ ", " ", $schema_insert);
$schema_insert .= ");$crlf ";
$temp = $temp.$schema_insert ;
$i++;
}
return $temp;
}
?>