下面小編就為大家帶來一篇使用php自動備份資料庫表的實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
1、前言
mysql資料庫的備份方式有很多;
例如:
1、使用mysqldump函數
mysqldump -u username -p dbname table1 table2 ... > BackupName.sql
dbname參數表示資料庫的名稱
table1和table2參數表示需要備份的表的名稱,為空白則整個Database Backup;
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>";// var_dump($re);// echo "</pre>";echo "正在備份表{$re['Table']}結構<br/>";fwrite($myfile, $re['Create Table'].";\r\n\r\n");echo "正在備份表{$re['Table']}結構完成<br/>";}//下面備份表資料echo "正在備份表{$tableName}資料<br/>";$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}資料完成<br/>";echo "<br/><hr/>";}fclose($myfile);}
5、結語
備份資料庫的主要過程:
切換到對應的資料庫;
使用show create table tableName,獲得表結構,寫到檔案中;
然後查詢所有的表資料,迴圈產生相對應sql語句,寫到檔案中;
試運行產生的sql檔案;
以上這篇使用php自動備份資料庫表的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考。
相關推薦:
mysql如何將Database Backup與匯入
mysqlDatabase Backup的幾種方法
沒有虛擬機器主機的小型MysqlDatabase Backup指令碼