PHP備份/還原MySQL數據庫的代碼


一、備份數據庫並下載到本地

// 設置SQL文件保存文件名 
$filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql"; 
// 所保存的文件名 
header("Content-disposition:filename=".$filename); 
header("Content-type:application/octetstream"); 
header("Pragma:no-cache"); 
header("Expires:0"); 
// 獲取當前頁面文件路徑,SQL文件就導出到此文件夾內 
$tmpFile = (dirname(__FILE__))."\\".$filename; 
// 用MySQLDump命令導出數據庫 
exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile); 
$file = fopen($tmpFile, "r"); // 打開文件 
echo fread($file,filesize($tmpFile)); 
fclose($file); 
exit; 

二、還原數據庫

<form id="form1" name="form1" method="post" action=""> 
【數據庫SQL文件】:<input id="sqlFile" name="sqlFile" type="file" /> 
<input id="submit" name="submit" type="submit" value="還原" /> 
</form> 
<?php 
// 我的數據庫信息都存放到config.php文件中,所以加載此文件,如果你的不是存放到該文件中,注釋此行即可; 
require_once((dirname(__FILE__).'/../../include/config.php')); 
if ( isset ( $_POST['sqlFile'] ) ) 
{ 
$file_name = $_POST['sqlFile']; //要導入的SQL文件名 
$dbhost = $cfg_dbhost; //數據庫主機名 
$dbuser = $cfg_dbuser; //數據庫用戶名 
$dbpass = $cfg_dbpwd; //數據庫密碼 
$dbname = $cfg_dbname; //數據庫名 

set_time_limit(0); //設置超時時間為0,表示一直執行。當php在safe mode模式下無效,此時可能會導致導入超時,此時需要分段導入 
$fp = @fopen($file_name, "r") or die("不能打開SQL文件 $file_name");//打開文件 
mysql_connect($dbhost, $dbuser, $dbpass) or die("不能連接數據庫 $dbhost");//連接數據庫 
mysql_select_db($dbname) or die ("不能打開數據庫 $dbname");//打開數據庫 

echo "<p>正在清空數據庫,請稍等....<br>"; 
$result = mysql_query("SHOW tables"); 
while ($currow=mysql_fetch_array($result)) 
{ 
mysql_query("drop TABLE IF EXISTS $currow[0]"); 
echo "清空數據表【".$currow[0]."】成功!<br>"; 
} 
echo "<br>恭喜你清理MYSQL成功<br>"; 

echo "正在執行導入數據庫操作<br>"; 
// 導入數據庫的MySQL命令 
exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name); 
echo "<br>導入完成!"; 
mysql_close(); 
} 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM