一、主要思想
1、需要备份Mysql数据库为name.sql文件
2、name.sql文件本质是sql语句
3、连接需要备份的数据库
4、创建要下载的文件名,内容变量
5、获取每个数据表的详细结构语句写进文件内容变量
$contents.=查到的数据表详细结构;
6、查询每个表的表头以及数据
7、把数据对照表头写成插入sql语句写进文件内容变量
$contents.=insert…… ;
image.png
8、定义php中header()函数 下载文件
header("Content-disposition:filename=".$filename);
header("Content-type:application/octetstream");
header("Pragma:no-cache");
header("Expires:0");
9、输出写好的文件变量
echo $contents;
二、代码
<?php
ob_start();
session_start();
//页面加密验证是否登录
if($_SESSION['admin']!=''){
//连接数据库
$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;
}
//没登陆就跳到登录界面
else echo "<script language='javascript'>top.location.href='index.php'</script>";
?>
网友评论