|
有时候,你的用户要求添加一个选项,导出整个数据库到一个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();]]>
- ?>
复制代码 |
|