日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

yii2 mysql save_Yii2 开发 MySQL 数据备份功能

發布時間:2025/3/19 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yii2 mysql save_Yii2 开发 MySQL 数据备份功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

應用場景

數據對于網站來說 是非常重要的 一般 cms 后臺 都有 數據備份功能。使用Yii 的第三方拓展 可以快速開發。

spanjeta/yii2-backup

spanjeta/yii2-backup 是基于Yii2 的一款 第三方擴展,安裝配置一下可以正常訪問,也可以很方便自定義。在開發過程中,因為備份后在 phpMyAdmin 導入出現一些問題。所以做了一些修改。

安裝spanjeta/yii2-backup

1、寫入擴展包

在項目找到composer.json 打開加入

"require": {

"spanjeta/yii2-backup": "*"

},

2、安裝擴展

打開cmd 命令 找到項目目錄下 執行 (注意:必須先安裝 composer ,否則失敗)

composer update

配置spanjeta/yii2-backup

找到 \backend\config\main.php 打開加入以下代碼

return[

'modules' => [

'backup' => [

'class' => 'spanjeta\modules\backup\Module',

],

],

]

訪問測試數據備份功能

確保你的項目有創建目錄的權限,訪問 index.php?r=backup 到此擴展安裝完畢

修改spanjeta/yii2-backup

默認安裝 在\vendor 目錄下,找到 \spanjeta\yii2-backup\controllers\ 打開 DefaultController.php 文件,修改以下代碼

1、找到 getData() 直接覆蓋即可

public function getData($tableName) {

$sql = 'SELECT * FROM ' . $tableName;

$cmd = Yii::$app->db->createCommand ( $sql );

$dataReader = $cmd->query();

$data_string="";

foreach ( $dataReader as $data ) {

foreach ($data as $key => $value) {

if(empty($value)){

unset($data[$key]);

}else{

$datas[$key]=mysql_real_escape_string($value);

}

}

$itemNames = array_keys ( $datas );

$itemNames = array_map ( "addslashes", $itemNames );

$items = join ( '`,`', $itemNames );

$itemValues = array_values ( $datas );

$valueString = join ( "','", $itemValues );

$valueString = "('" . $valueString . "'),";

$values = "\n" . $valueString;

if ($values != "") {

$data_string .= "INSERT INTO `$tableName` (`$items`) VALUES" . rtrim ( $values, "," ) . ";" . PHP_EOL;

}

}

if (empty($data_string)){

return null;

}

if ($this->fp) {

$this->writeComment ( 'TABLE DATA ' . $tableName );

$final = $data_string . PHP_EOL . PHP_EOL . PHP_EOL;

fwrite ( $this->fp, $final );

} else {

$this->tables [$tableName] ['data'] = $data_string;

return $data_string;

}

}

2、搜索以下代碼,并注釋掉

fwrite ( $this->fp, 'SET AUTOCOMMIT=0;' . PHP_EOL );

3、找到 actionCreate() 直接覆蓋即可

public function actionCreate() {

$tables = $this->getTables ();

if (! $this->StartBackup ()) {

Yii::$app->user->setFlash ( 'success', "Error" );

return $this->render ( 'index' );

}

foreach ( $tables as $tableName ) {

$this->getColumns ( $tableName );

$this->getData ( $tableName );

}

$this->EndBackup ();

$this->redirect ( array (

'index'

) );

}

總結

以上是生活随笔為你收集整理的yii2 mysql save_Yii2 开发 MySQL 数据备份功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。