点击这里给我发消息 点击这里给我发消息

PHP备份MYSQL数据库

添加时间:2013-12-6
    相关阅读: 数据库 SQL PHP

<?php
require(dirname(__FILE__).'/config.php');

//备份
if(post_get('act', 1)=='bak'){
 $file_name = $_POST['file'];
 
 $bak_connection = db::factory('mysql');
 $query  = 'show tables';
 $tables_arr = $bak_connection->get_array($query);
 $file_content = '';
 //遍历所有表
 foreach($tables_arr as $value){
  $table = $value['Tables_in_'.$current_conf['DBNAME']];
  if(!empty($table)){
   $query = 'show create table '.$table;
   $file_content  .= "DROP TABLE IF EXISTS `$table`;\r\n";
   //表结构
   $table_destruct = $bak_connection->get_array($query);
   $file_content  .= str_replace("\n", '', str_replace("\r\n", "\n", $table_destruct[0]['Create Table'])) . ";\r\n\r\n";
   //$msg = $table.'表结构备份完毕';
   //表数据
   $query = 'SELECT * FROM '.$table;
   $table_data = $bak_connection->get_array($query);
   foreach($table_data as $key => $value){
    $file_content .= "INSERT INTO `$table` VALUES('";
    $value_arr     = array_values($value);
    $file_content .= implode("','" , $value_arr);
    $file_content .= "');\r\n\r\n";
   }
   //$msg .= $table.'表数据备份完毕';
  }
 }
 
 $file_content = iconv('GBK' , 'UTF-8' , $file_content);
 /*
 $fp = fopen($path , 'w') or die('文件不可写,或不存在');
 fputs($fp , $file_content);
 fclose($fp);
 unset($fp);
 */
 header("Content-type: text/plain");
    header("Accept-Ranges: bytes");
    header("Content-Disposition: attachment; filename=".$file_name);
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
    header("Pragma: no-cache" );
    header("Expires: 0" );
    exit($file_content);
 
}
//还原
if(post_get('act', 1)=='restore'){
 $sql_file = $_POST['file'];
 
 $bak_connection = db::factory('mysql');
 $fp = fopen($sql_file , 'r');
 while(!feof($fp)){
  $line = fgets($fp);
  if(trim($line)!='' || trim($line)!=null){
   $temp_line = iconv('utf-8' , 'gbk' , $line);
   $result = $bak_connection->execute($temp_line);
   if($result){
    redirect('back.php' , '还原成功');
   }
   redirect('back.php' , '还原失败');
  }
 }
 
}

config.php这个文件是我自己的,主要是用来提供生成MYSQL连接的。

$bak_connection = db::factory('mysql');

 

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册