国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

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

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

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

1、緣由

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

2、介紹

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

做WEB開發(fā),一直以來,都采用 Navicat For Mysql 將本地數據庫同步到服務器上。前些天,突然心血來潮,將本地數據庫升級到了 Mysql 5.5版本,再次將數據同步的時候卻發(fā)生了錯誤。想起之前寫過的 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數據,但不包含表創(chuàng)建代碼。 * @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 如果存在觸發(fā)器,生成刪除代碼。原因是:插入數據的時候可能會受到觸發(fā)器影響。 * @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 生成所有觸發(fā)器的創(chuàng)建代碼。 * @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教程

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 独山县| 大理市| 西畴县| 武夷山市| 普陀区| 长垣县| 武冈市| 望奎县| 壤塘县| 蛟河市| 永安市| 罗甸县| 黑山县| 巫山县| 安龙县| 富源县| 巧家县| 河北区| 娄烦县| 龙井市| 大邑县| 宁强县| 阿合奇县| 连南| 张掖市| 灵山县| 鄄城县| 襄城县| 梅河口市| 精河县| 开化县| 小金县| 班玛县| 霍州市| 莱西市| 武隆县| 云梦县| 福清市| 沙雅县| 岚皋县| 丰城市|