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']}结构
5、結語
備份資料庫的主要流程:
切換到對應的資料庫;
使用show create table tableName,取得表格結構,寫到檔案;
然後查詢所有的表數據,循環產生相對應sql語句,寫到文件中;
試運行生成的sql檔;
相關推薦:
##Navicat for MySQL定時備份資料庫與資料復原作業
以上是php如何自動備份資料庫表的詳細內容。更多資訊請關注PHP中文網其他相關文章!