如何一键导出MySQL数据库
|
admin
2012年4月25日 9:25
本文热度 4596
|
有时候,你的用户要求添加一个选项,导出整个数据库到一个SQL文件。虽然phpMyAdmin,以及Navicat有这个功能,但你的用户想要更简单点怎么办?
以下是如何一键导出MySQL数据库的php代码。
新建一个名为backup.php的文件,复制粘贴以下代码,然后编辑数据库连接设置和mysqldump的路径。有必要的话,你还可以添加一个backup.php超链接到你的程序里:
1 |
<A href="backup.php">导出整个数据库</A> |
请注意,第一个php代码执行的时候,会导出zip压缩后的sql文件,所以此代码所在文件夹需要可写的权限。
如果你没有写的权限,请使用第二个php代码,缺点是导出的sql文件不会被zip压缩。
此代码需要可写权限:
05 |
$hostname = "localhost"; |
10 |
$dumpfname = $dbname . "_" . date("Y-m-d_H-i-s").".sql"; |
11 |
$command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname |
14 |
$command.= "--password=". $password ." "; |
16 |
$command.= " > " . $dumpfname; |
20 |
$zipfname = $dbname . "_" . date("Y-m-d_H-i-s").".zip"; |
21 |
$zip = new ZipArchive(); |
22 |
if($zip->open($zipfname,ZIPARCHIVE::CREATE)) |
24 |
$zip->addFile($dumpfname,$dumpfname); |
29 |
if (file_exists($zipfname)) { |
30 |
header('Content-Description: File Transfer'); |
31 |
header('Content-Type: application/octet-stream'); |
32 |
header('Content-Disposition: attachment; filename='.basename($zipfname)); |
此代码不需要可写权限:
06 |
$hostname = "localhost"; |
11 |
$command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname |
14 |
$command.= "--password=". $password ." "; |
18 |
$dump = ob_get_contents(); |
22 |
header('Content-Description: File Transfer'); |
23 |
header('Content-Type: application/octet-stream'); |
24 |
header('Content-Disposition: attachment; filename='.basename($dbname . "_" . |
25 |
date("Y-m-d_H-i-s").".sql")); |
该文章在 2012/4/25 9:25:48 编辑过