快速导出MySQL数据库的php代码

有时候,你的用户要求添加一个选项,导出整个数据库到一个SQL文件。虽然phpMyAdmin,以及Navicat有这个功能,但你的用户想要更简单点怎么办?
 
以下是如何一键导出MySQL数据库的php代码。
 
新建一个名为backup.php的文件,复制粘贴以下代码,然后编辑数据库连接设置和mysqldump的路径。有必要的话,你还可以添加一个backup.php超链接到你的程序里:
 
<A href="backup.php">导出整个数据库</A>
 
请注意,第一个php代码执行的时候,会导出zip压缩后的sql文件,所以此代码所在文件夹需要可写的权限。
 如果你没有写的权限,请使用第二个php代码,缺点是导出的sql文件不会被zip压缩。
 
此代码需要可写权限:
 
<?php
 
 $username = "root";
 $password = "";
 $hostname = "localhost";
 $dbname   = "cars";
 
 // if mysqldump is on the system path you do not need to specify the full path
 // simply use "mysqldump --add-drop-table ..." in this case
 $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 the dump file
 $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();
 }
 
 // read zip file and send it to standard output
 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
 ob_start();
 
 $username = "root";
 $password = "";
 $hostname = "localhost";
 $dbname   = "cars";
 
 // if mysqldump is on the system path you do not need to specify the full path
 // simply use "mysqldump --add-drop-table ..." in this case
 $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();
 
 // send dump file to the output
 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();]]>
 ?>
零度电脑知识网www.needc.com电脑知识学习网站。电脑知识学习QQ群:81158926 欢迎电脑爱好者加入。

零度电脑_基础知识_最新消息