$table_code = "";
while(list($key,$table_name)=each($table_list))
{ //执行对每一个表的数据返回
if($backtype!="data")
{ //备份结构
$table_code .= get_table_code($link,$database,$table_name);
}//end if
if($backtype!="structure")
{ //备份数据
$table_code .= get_table_data($link,$database,$table_name);
}//end if
}//end while
//echo $table_code;
if($gz==0)
{ //输出
$filename = $database.".sql";
$handle = fopen($filename, "a+");
$temp = fwrite($handle, $table_code);
echo $temp;
fclose($handle);
//header("location:",$filename);
echo "<script>location.replace(''".$filename."'');</script>";
}elseif($gz==1){
$filename = $database.".zip";
$fp = gzopen($filename, "w9");
gzwrite($fp,$table_code);
gzclose($fp);
//header("location:",$filename);
echo "<script>location.replace(''".$filename."'');</script>";
}//end if
}else{
echo "连接错误!!!";
exit();
}//end if
//*****************************************************************
//函数名:get_table_list
//功能:返回指定数据库中的所有表名
//参数:$link 是数据库连接
// $database 数据库名
//时间:2004年3月23日
//作者:野马
//QQ:46163020
//Email:woaini4651@yahoo.com.cn
//*****************************************************************
function get_table_list($link,$database)
{
$result = @mysql_list_tables($database);
if(!$result)
{//判断打开是否出错
return false;
}//end if
while($row = mysql_fetch_row($result))
{
$table_name[] = $row[0];
}//end while
mysql_free_result($result);
return $table_name;
}//end function
//*****************************************************************
//函数名:get_table_code
//功能:返回指定数据库中表的结构,用于创建指定表的SQL语句
//参数:$link 是数据库连接
// $database 数据库名
// $table_name表名
//时间:2004年3月23日
//作者:野马
//QQ:46163020
//Email:woaini4651@yahoo.com.cn
//*****************************************************************
function get_table_code($link,$database,$table_name)
{
mysql_select_db($database, $link);
$result = mysql_query("select * from ".$table_name, $link);
$return_str = "CREATE TABLE `".$table_name."` (\n\t";
$fields_num = (int)mysql_num_fields($result);
$fun_my[''string''] = "varchar";
$fun_my[''datetime''] = "datetime";
$fun_my[''blob''] = "text";
$fun_my[''real''] = "float";
echo "<br>";
for($i=0; $i < $fields_num; $i++)
{
$return_str .= "`".mysql_field_name($result, $i)."` ";
$type = mysql_field_type($result, $i);
if(isset($fun_my[$type]))
{ //解析数据类型
if($fun_my[$type]=="datetime" || $fun_my[$type]=="text")
{
$return_str .= $fun_my[$type]." ";
}else{
$return_str .= $fun_my[$type]."(".mysql_field_len($result, $i).") ";
}//end if
}else{
$return_str .= $type."(".mysql_field_len($result, $i).") ";
}//end if
if($i==0)
{ //
$return_str .= "NOT NULL auto_increment ";
}else{
$return_str .= mysql_field_flags($result, $i)=="not_null"?"NOT NULL ":"default NULL ";
}//end if
$return_str .= ",\n\t";
}//end for
$return_str .= "PRIMARY KEY (`id`)\n)TYPE=MyISAM AUTO_INCREMENT=30;\n\n";
return $return_str;
}//end function
//*****************************************************************
//函数名:get_table_data
//功能:返回指定数据库指定表的所有数据的,插入SQL语句
//参数:$link 是数据库连接
// $database 数据库名
// $table_name表名
//时间:2004年3月23日
//作者:野马
//QQ:46163020
//Email:woaini4651@yahoo.com.cn
//*****************************************************************
function get_table_data($link,$database,$table_name)
{
mysql_select_db($database, $link);
$result = mysql_query("select * from ".$table_name, $link);
$fields_num = (int)mysql_num_fields($result);
while($row = mysql_fetch_row($result))
{
$row_data = "INSERT INTO `".$table_name."` VALUES (''";
for($i=0;$i<$fields_num;$i++)
{
$row_data_arr[$i]=addslashes($row[$i]);
}//end if
//print_r($row_data_arr);
$row_data .= implode("'',''",$row_data_arr);
$row_data .= "'');\n";
$table_data .= $row_data;
}//end while
$table_data .= "\n\n";
return $table_data;
}//end function
?>
关于如何备份数据库(Mysql)的简易程序
0
相关文章