首頁 >後端開發 >php教程 >如何利用php實作自動備份資料庫表的圖文程式碼介紹

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

黄舟
黄舟原創
2017-07-30 09:36:371306瀏覽

下面小編就為大家帶來一個使用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檔;###

以上是如何利用php實作自動備份資料庫表的圖文程式碼介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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