服务器 频道

关于如何备份数据库(Mysql)的简易程序

  $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
  ?>
0
相关文章