PHP 备份下载 MySQL 数据库

<?php
	//连接数据库
	$conn=mysql_connect("localhost","root","root");
	mysql_select_db("evaluation_system",$conn);
	mysql_query("set names utf8");
	
	//要备份的数据库名
	$dbname="evaluation_system";
	//定义备份后要下载的文件名
	$filename="evaluation_system-backup-".gmdate("Y-m-d").".sql";
	//备份文件里头的内容 目前为空    
	$contents="";
	
	//定义下载文件
	header("Content-disposition:filename=".$filename); 
	header("Content-type:application/octetstream"); 
	header("Pragma:no-cache"); 
	header("Expires:0"); 
	
	//查询数据库中的所有表名
	$sql_tablist="show tables"; 
	$rs_tablist=mysql_query($sql_tablist); 
	while($tablist=mysql_fetch_assoc($rs_tablist)){
		//echo $tablist['Tables_in_'.$dbname]."</br>";
		//查询每个标的创建详细信息
		$sql_createtab="show create table `".$tablist['Tables_in_'.$dbname]."`";
		$rs_createtab=mysql_query($sql_createtab);
		$createtab=mysql_fetch_assoc($rs_createtab);
		//每个标的创建信息写入文件内容变量
		$contents.="\r\t".$createtab['Create Table'].";\r\t";
		
		//备份文件要插入的数据也写入文件内容变量
		$contents.="insert into ".$tablist['Tables_in_'.$dbname]."(";
		//查询每个表的表头
		$sql_desctab="desc `".$tablist['Tables_in_'.$dbname]."`";
		$rs_desctab=mysql_query($sql_desctab);
		$recordcount=mysql_num_rows($rs_desctab);       //统计所有行数
		$sum=0;
		//把查询到的表头记录在数组里头
		$array=array();
		while($desctab=mysql_fetch_assoc($rs_desctab)){
			$array[]=$desctab['Field'];
			$contents.="`".$desctab['Field']."`";
			if(++$sum<$recordcount){
				$contents.=",";
			}
		}
		$contents.=") values\r\t";
		
		//查询每个表的所有数据
		$sql_data="select * from `".$tablist['Tables_in_'.$dbname]."` ";
		$rs_data=mysql_query($sql_data); 
		$recordcount1=mysql_num_rows($rs_data);       //统计所有行数
		
		//根据表头把数据按顺序写进文件内容变量
		$sum1=0;
		while($data=mysql_fetch_assoc($rs_data)){
			$contents.="(";
			$sum=0;
			foreach($array as $value){
				$contents.="'".$data[$value]."'";
				if(++$sum<$recordcount){
				$contents.=",";
				}   
			}
			$contents.=")";
			if(++$sum1<$recordcount1){
				$contents.=",\r\t";
			}
		}
		$contents.=";";
	}
	//输出数据
	echo $contents;
?>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值