麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

ThinkPHP框架實現的MySQL數據庫備份功能示例

2020-03-22 20:16:58
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Thinkhtml' target='_blank'>PHP框架實現的MySQL數據庫備份功能,結合實例形式分析了thinkPHP導出mysql數據庫相關操作實現與使用技巧,需要的朋友可以參考下

本文實例講述了ThinkPHP框架實現的MySQL數據庫備份功能。分享給大家供大家參考,具體如下:

1、緣由

自從2010年開始試用ThinkPHP以來,的確帶來了許多方便。的確給我帶來了許多方便。此次應為數據頻繁備份需要,而每次遠程連接服務器頗為不便。變萌生了寫個ThinkPHP數據庫備份SQL生成類的念頭。

2、介紹

由于在數據庫中有使用觸發器。因此也需要一并備份。并且為了插入數據的時候不會受到觸發器影響而破壞先前插入的數據,在插入數據之前生成了刪除觸發器的代碼。 本類并不能生成數據表的創建和刪除代碼,因此在使用中請注意保證兩端表結構的一致。

做WEB開發,一直以來,都采用 Navicat For Mysql 將本地數據庫同步到服務器上。前些天,突然心血來潮,將本地數據庫升級到了 Mysql 5.5版本,再次將數據同步的時候卻發生了錯誤。想起之前寫過的 ThinkPHP 實現Mysql數據庫備份 只有備份數據的功能,而沒有導出表結構的功能。于是想到了升級一下。讓其更完整。

本次升級 增加了 備份表結構、視圖功能。導出數據增加了類型判斷,insert 語句當字段為空的時候會輸出 NULL,當為數字 的時候則不會帶上 單引號。

 ?php * 描述:基于ThinkPHP框架的Mysql數據庫導出類 * 日期:2012-07-15 * 作者:龔辟愚class DBExport * @description 獲取當前數據庫的所有表名。 * @static * @return array static protected function getTables() $dbName=C( DB_NAME  $result=M()- query( SHOW FULL TABLES FROM `{$dbName}` WHERE Table_Type = BASE TABLE  foreach ($result as $v){ $tbArray[]=$v[ Tables_in_ .C( DB_NAME  return $tbArray; static protected function getViews() $dbName=C( DB_NAME  $result=M()- query( SHOW FULL TABLES FROM `{$dbName}` WHERE Table_Type = VIEW  foreach ($result as $v){ $tbArray[]=$v[ Tables_in_ .C( DB_NAME  return $tbArray; * @description 導出SQL數據,但不包含表創建代碼。 * @static * @return string static public function ExportAllData() $tables = self::getTables(); $arrAll = array( SET FOREIGN_KEY_CHECKS=0; , self::BuildAllTriggerDropSql(), self::BuildTableSql(), self::BuildViewSql() $tbl = new Model(); foreach($tables as $table) $arrAll[]= /r/nDELETE FROM {$table};  $rs = $tbl- query( SHOW COLUMNS FROM {$table}  $arrFields = array(); foreach ($rs as $k= $v){ $arrFields[] = `{$v[ Field ]}`  $sqlFields = implode($arrFields, ,  $rs=$tbl- query( select * from `{$table}`  foreach ($rs as $k= $v){ $arrValues = array(); foreach($v as $key= $val) if(is_numeric($val)){ $arrValues[]=$val; }else if(is_null($val)){ $arrValues[]= NULL  }else{ $arrValues[]= .addslashes($val).  $arrAll[] = INSERT INTO `{$table}` VALUES ( .implode( , ,$arrValues).  $arrAll[]=self::BuildTriggerCreateSql(); return implode( /r/n ,$arrAll); static protected function BuildTableSql() $tables = self::getTables(); $arrAll = array(); foreach($tables as $val){ $rs = M()- query( SHOW CREATE TABLE `{$val}`  $tbSql = preg_replace( #CREATE(.*)//s+TABLE# , CREATE TABLE ,$rs[0][ Create Table  $arrAll[] = DROP TABLE IF EXISTS `{$rs[0][ Table ]}`;/r/n{$tbSql};/r/n  return implode( /r/n ,$arrAll); static protected function BuildViewSql() $views = self::getViews(); $arrAll = array(); foreach($views as $val){ $rs = M()- query( SHOW CREATE VIEW `{$val}`  $tbSql = preg_replace( #CREATE(.*)//s+VIEW# , CREATE VIEW ,$rs[0][ Create View  $arrAll[] = DROP VIEW IF EXISTS `{$rs[0][ View ]}`;/r/n{$tbSql};/r/n  return implode( /r/n ,$arrAll); * @description 如果存在觸發器,生成刪除代碼。原因是:插入數據的時候可能會受到觸發器影響。 * @static * @return string static public function BuildAllTriggerDropSql() $rs = M()- query( show triggers  $arrAll = array(); foreach ($rs as $k= $v) $arrSql = array( DROP TRIGGER IF EXISTS ` ,$v[ Trigger ],  $arrAll[] = implode( ,$arrSql); return implode( /r/n ,$arrAll); * @description 生成所有觸發器的創建代碼。 * @static * @return string static protected function BuildTriggerCreateSql() $rs = M()- query( show triggers  $arrAll = array(); foreach ($rs as $k= $v) $arrSql = array( CREATE TRIGGER ` ,$v[ Trigger ], ` ,$v[ Timing ], ,$v[ Event ], ON ` , $v[ Table ], ` FOR EACH ROW ,$v[ Statement ],  $arrAll[] = implode( ,$arrSql); return implode( /r/n ,$arrAll);}

調用示例:

vendor( DBExport ,COMMON_PATH);header( Content-type: text/plain; charset=UTF-8 $dbName = C( DB_NAME header( Content-Disposition: attachment; filename=/ {$dbName}.sql/ echo DBExport::ExportAllData()

您可能感興趣的文章:

通過PHP實現微信小程序人臉識別刷臉登錄功能

PHP實現防止表單重復提交功能【基于token驗證】

tp框架(thinkPHP)實現三次登陸密碼錯誤之后鎖定賬號功能示例

以上就是ThinkPHP框架實現的MySQL數據庫備份功能示例的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级免费a | 日本欧美一区二区三区在线播 | 天天黄色片| 国产午夜精品一区 | 日美黄色片 | 美国人成人在线视频 | 在线成人免费av | 成人毛片免费在线 | 中国7777高潮网站 | 黄色网址在线播放 | 精品久久久久久久久久中文字幕 | 亚洲综人网 | av在线更新 | 欧美aaaaaaaa| 久草在线手机视频 | 国产成人在线播放视频 | 色毛片| 二级大黄大片高清在线视频 | 久久91久久久久麻豆精品 | 国产一区二区二 | 久久av免费观看 | 午夜精品久久久久久毛片 | 久久一本日日摸夜夜添 | 国产精品成人亚洲一区二区 | 黄色成人av在线 | 久久精品亚洲国产奇米99 | 成人免费在线视频播放 | 久久大陆 | 97超碰资源站 | 欧美日日操 | 毛片a级毛片免费播放100 | 日本不卡中文字幕 | 欧美精品videos| 欧美精品一区二区久久 | 黑人一级片 | 性欧美视频在线观看 | 婷婷一区二区三区四区 | 欧美黄成人免费网站大全 | 一区国产在线观看 | 激情综合婷婷久久 | 91精选视频在线观看 |