您好,欢迎来到调星娱乐。
搜索
您的当前位置:首页关于如何备份数据库(Mysql)的简易程序_MySQL

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

来源:调星娱乐
   在公司(网络)的服务器上有很多网站,我上传网站时对其他瓦干也有同样的权限。所以就想把同事的网站荡下来学习一下。有了源代码,没有数据库什么也运行不了啊。服务器的数据库是安网站开的,每一个网站把*.sql发给服务器管理员,由管理员导入到数据库中。但是数据库账号密码不能登陆只能执行sql语句。所以我就想起来做一个简易的,类似于phpmyadmin的数据库导出功能。这样我就可以轻松的获得所有网站的数据库了。
  
  用这个程序可以实现简单的数据导出(生成的脚本可直接在phpmyadmin执行)。进一步的功能还可以慢慢扩展。当然不要用来盗用别人机密的冬冬了。
  
  其中解析的数据类型还不全,只是集中简单的常用类型。如果那位仁兄,发现了其他不适用的类型,请告诉我mailto:woaini4651@yahoo.com.cn。
  
  index.php
  
  
  
  
  数据库备份
  
  
  
  
  
  
  
  

  
  

  

  


  
  
  
  cmd.php
  
    if(isset($_POST['backupstart']))
  {
  $hostname = trim($_POST['hostname']);
  $database = trim($_POST['database']);
  $username = trim($_POST['username']);
  $password = trim($_POST['password']);
  $backtype = $_POST['backup_type'];
  $gz  = $_POST['gzipcompress'];
  
  $link = @mysql_pconnect($hostname, $username, $password);
  if(!$link)
  {  //连接数据库
  echo "数据库打开出错!";
  exit();
  }//end if
  
  $table_list = get_table_list($link,$database);
  if($table_name===false)
  {  //检索数据库的表
  echo "数据库打开出错!!";
  exit();
  }//end if
  //echo "
";
  //print_r($table_list);
  
  $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 "location.replace('".$filename."');";
  
  }elseif($gz==1){
  $filename = $database.".zip";
  $fp = gzopen($filename, "w9");
  gzwrite($fp,$table_code);
  gzclose($fp);
  
  //header("location:",$filename);
  
  echo "location.replace('".$filename."');";
  
  }//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 "
";
  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."(".mys

Copyright © 2019- dxga.cn 版权所有 湘ICP备2023023988号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务