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

php如何自動備份資料庫表

小云云
小云云原創
2018-02-01 10:07:031361瀏覽

php如何自動備份資料庫表?本文就和大家分享使用php自動備份資料庫表的實作方法,為大家做個參考,希望能幫助大家。

1、前言

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

例如:

1、使用mysqldump函數

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

dbname參數表示資料庫的名稱

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、結語

備份資料庫的主要流程:

切換到對應的資料庫;

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

然後查詢所有的表數據,循環產生相對應sql語句,寫到文件中;

試運行生成的sql檔;

相關推薦:

##Navicat for MySQL定時備份資料庫與資料復原作業

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

如何利用php實作自動備份資料庫表的圖文程式碼介紹

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

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