PHP导出MYSQL数据库并压缩

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP导出MYSQL数据库并压缩相关的知识,希望对你有一定的参考价值。

php可以一键导出mysql备份文件,并压缩存放,尽管phpMyAdmin有这功能,不过若你自己开发网站或者是为别人写CMS,你不应该要求别人用你程序的时候再去另外用phpMyAdmin备份MYSQL,这应该是你CMS中的一个功能,那么PHP如何实现一键备份MYSQL数据,这里是指把MYSQL内容全部导出成SQL文件,然后压缩SQL,介绍两种方法如下:

第一种:

<?php
$username = "root";//你的MYSQL用户名
$password = "";//密码
$hostname = "localhost";//MYSQL服务器地址
$dbname   = "cars";//数据库名
$dumpfname = $dbname . "_" . date("Y-m-d_H-i-s").".sql";
$command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname --user=$username ";
if ($password) $command.= "--password=". $password ." ";
$command.= $dbname;
$command.= " > " . $dumpfname;
system($command);
// 压缩成ZIP文件
$zipfname = $dbname . "_" . date("Y-m-d_H-i-s").".zip";
$zip = new ZipArchive();
if($zip->open($zipfname,ZIPARCHIVE::CREATE))
{
   $zip->addFile($dumpfname,$dumpfname);
   $zip->close();
}
if (file_exists($zipfname)) {
    header(‘Content-Description: File Transfer‘);
    header(‘Content-Type: application/octet-stream‘);
    header(‘Content-Disposition: attachment; filename=‘.basename($zipfname));
    flush();
    readfile($zipfname);
    exit;
}
?>

上述代码可保存成一个PHP文件,如mysqlbak.php,注意,此文件必须有写权限。为了使用方便,你可以在后台给此文件一个链接,需要导出MYSQL时,你只需点击一下就执行备份导出操作。

第二种方法:不需要写权限,但不压缩SQL文件,代码如下:

<?php
ob_start();
$username = "root";
$password = "";
$hostname = "localhost";
$dbname   = "test";
$command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname  --user=$username ";
if ($password) $command.= "--password=". $password ." ";
$command.= $dbname;
system($command);
$dump = ob_get_contents();
ob_end_clean();
header(‘Content-Description: File Transfer‘);
header(‘Content-Type: application/octet-stream‘);
header(‘Content-Disposition: attachment; filename=‘.basename($dbname . "_" . date("Y-m-d_H-i-s").".sql"));
flush();
echo $dump;
exit();
?>

两种方法你可以选用一种,同样可将第二种方法保存成mysqlbak.php文件,在后台给个链接,用着方便。

以上是关于PHP导出MYSQL数据库并压缩的主要内容,如果未能解决你的问题,请参考以下文章

使用mysqldump备份导出MySQL数据库并压缩gzip

使用php将mysql数据导出到ODF

急求php导出生成excel的代码

php用表格的形式显示连接的一张mysql表格,并具有直接在表格中修改、删除mysql表中数据的功能

我可以使用 RedBean PHP ORM 导出 Sqlite 数据库并导入到 MySQL 吗?

仅使用PHP导出MySQL数据库[关闭]