有時候,你的用戶要求添加一個選項,導(dǎo)出整個數(shù)據(jù)庫到一個SQL文件。雖然phpMyAdmin,以及Navicat有這個功能,但你的用戶想要更簡單點怎么辦?
以下是如何一鍵導(dǎo)出MySQL數(shù)據(jù)庫的php代碼。
新建一個名為backup.php的文件,復(fù)制粘貼以下代碼,然后編輯數(shù)據(jù)庫連接設(shè)置和mysqldump的路徑。有必要的話,你還可以添加一個backup.php超鏈接到你的程序里:
1 |
< A href = "backup.php" >導(dǎo)出整個數(shù)據(jù)庫</ A > |
請注意,第一個php代碼執(zhí)行的時候,會導(dǎo)出zip壓縮后的sql文件,所以此代碼所在文件夾需要可寫的權(quán)限。
如果你沒有寫的權(quán)限,請使用第二個php代碼,缺點是導(dǎo)出的sql文件不會被zip壓縮。
此代碼需要可寫權(quán)限:
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 )); |
此代碼不需要可寫權(quán)限:
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 編輯過