php自動備份資料庫表格的方法

墨辰丷
發布: 2023-03-26 17:56:01
原創
1915 人瀏覽過

下面小編就為大家帶來一個使用php自動備份資料庫表的實作方法。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

1、前言

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

例如:

1、使用mysqldump函數

#
mysqldump -u username -p dbname table1 table2 ... > BackupName.sql
登入後複製

dbname參數表示資料庫的名稱

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

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

基本上使用:

2、管理工具

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

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

2、相關函數介紹

#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自動備份資料庫表的實作方法就是小編分享給大家的全部內容了,希望能給大家一個參考。


相關推薦:

mysql如何將資料庫備份與匯入

mysql資料庫備份的幾種方法

#沒有虛擬主機的小型Mysql資料庫備份


###########

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!