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;
?>

猜你喜欢

转载自blog.csdn.net/mshxuyi/article/details/88696812