日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/19 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 数据备份功能的全部內容,希望文章能夠幫你解決所遇到的問題。

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