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'

) );

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值