PHP对Mysql备份并提供下载到本地

一、主要思想

1、需要备份Mysql数据库为name.sql文件
2、name.sql文件本质是sql语句
3、连接需要备份的数据库
4、创建要下载的文件名,内容变量
5、获取每个数据表的详细结构语句写进文件内容变量
$contents.=查到的数据表详细结构;

image.png

6、查询每个表的表头以及数据

image.png

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;

二、代码

";
        //查询每个标的创建详细信息
        $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 "";
?>

你可能感兴趣的:(PHP对Mysql备份并提供下载到本地)