首頁 >後端開發 >php教程 >如何實作PHP自動備份資料庫

如何實作PHP自動備份資料庫

炎欲天舞
炎欲天舞原創
2017-08-03 16:54:372892瀏覽

如何使用PHP自動備份資料庫


1、前言

mysql資料庫的備份方式有很多;

##1、前言

mysql資料庫的備份方式有很多;

#例如:

1、使用mysqldump函數

 

mysqldump -u username -p dbname table1 table2 ...  > BackupName.sql

  1. dbname參數表示資料庫的名稱

  2. table1和table2參數表示需要備份的資料表的名稱,為空白則整個資料庫備份;

BackupName.sql參數表設計備份檔案的名稱,檔案名稱前面可以加上一個絕對路徑。通常將資料庫分成一個後綴名為sql的檔案;

 

#基本上使用:

2、管理工具

備份資料庫的方法很多,上面兩種比較常見

而本次主要講解如何透過php函數自動備份資料庫

2、相關函數介紹

2.1 、fopen

2.2、array_keys

#2.3、array_values

#2.4、implode

##2.5、substr

2.6、fwrite

#3、實作想法

 

4、程式碼構成

 

/**
 * [copyDb description]  备份数据库
 * @param  [type] $dbname   [description]  数据库名
 * @param  [type] $fileName [description]  存储的文件名
 * @return [type]           [description]
 */public function copyDb($dbname, $fileName){
	$myfile = fopen($fileName, "w") or die("Unable to open file!");//打开存储文件
	$this->link->query("use {$dbname}");//切换数据库
	$this->changeDb($dbname);
	$tables = $this->link->query('show tables');//获取当期数据库所有表名称
	while($re = $tables->fetch(PDO::FETCH_ASSOC)){
		//var_dump($re);//查看数组构成
		$tableName = $re['Tables_in_'.$dbname];//构成特定的下标
		$sql = "show create table {$tableName};";
		$tableSql = $this->link->query($sql);

		fwrite($myfile, "DROP TABLE IF EXISTS `{$tableName}`;\r\n");//加入默认删除表的遇见
		//下面备份表结构,这个循环之执行一次
		while($re = $tableSql->fetch(PDO::FETCH_ASSOC)){
			// echo "<pre class="brush:php;toolbar:false">";
			// var_dump($re);
			// echo "
"; echo "正在备份表{$re['Table']}结构
"; fwrite($myfile, $re['Create Table'].";\r\n\r\n"); echo "正在备份表{$re['Table']}结构完成
"; } //下面备份表数据 echo "正在备份表{$tableName}数据
"; $sql = "select * from {$tableName};"; $valueSql = $this->link->query($sql); while($re = $valueSql->fetch(PDO::FETCH_ASSOC)){ $keyArr = array_keys($re);//获得对应的键值 $valueArr = array_values($re);//获得对应的值 $keyStr = ''; foreach ($keyArr as $key => $value) { $keyStr .= "`".$value."`,"; } $keyStr = substr($keyStr,0,strlen($keyStr)-1); //取出最后一个逗号 $valueStr = ''; // var_dump($valueArr); foreach ($valueArr as $key => $value) { $valueStr .= "'".$value."',"; } //以上的处理只是对应sql的写法 $valueStr = substr($valueStr,0,strlen($valueStr)-1); //取出最后一个逗号 $sql = "insert into `{$tableName}`({$keyStr}) values({$valueStr})"; fwrite($myfile, $sql.";\r\n\r\n"); } echo "正在备份表{$tableName}数据完成
"; echo "

"; } fclose($myfile);}

5、結語

備份資料庫的主要過程:

1:切換到對應的資料庫;

2:使用show create table  tableName,取得表格結構,寫到檔案中;

3:然後查詢所有的表格數據,循環產生相對應sql語句,寫到檔案中; ######4:試運行產生的sql檔;###

以上是如何實作PHP自動備份資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn