如何一键导出MySQL数据库
				
									
					
					
						|  | 
							admin 2012年4月25日 9:25
								本文热度 4625 | 
					
				 
				
有时候,你的用户要求添加一个选项,导出整个数据库到一个SQL文件。虽然phpMyAdmin,以及Navicat有这个功能,但你的用户想要更简单点怎么办?
以下是如何一键导出MySQL数据库的php代码。
新建一个名为backup.php的文件,复制粘贴以下代码,然后编辑数据库连接设置和mysqldump的路径。有必要的话,你还可以添加一个backup.php超链接到你的程序里:
1 | 
<Ahref="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= newZipArchive();   | 
 
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 编辑过