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 数据备份功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven 不编译jasper文件_第一
- 下一篇: mysql 导出gbk_mysqldum