基于 ThinkPhp 框架下导出MySql数据库内容

1 篇文章 0 订阅
1 篇文章 0 订阅
<?php
/**
 * 数据库备份模块
 * 
 * 主要用于导出数据库
 * 
 **/
class backupDBAction extends Action {

    /**
     * 操作本地数据库
     * 
     * @return bool true|false
     * 
     **/
    public function exportMySql() {
        // 初始化
        $M = new Model();
        $dataBase = C('DB_NAME');

        // 查找当前数据库所有表
        $tables = $M->query("show tables");

        $mysql .= "CREATE DATABASE /*!32312 IF NOT EXISTS*/`$dataBase` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */;\r\n\r\nUSE `$dataBase`;\r\n\r\n";

        foreach ($tables as $key => $value) {
            // 获取表名称
            $table = $value['Tables_in_'.C('DB_NAME')];

            // 获取创建表数据
            $table_data = $M->query("show create table `$table`");

            // 写入备份数据库
            $mysql .= "DROP TABLE IF EXISTS `$table`;\r\n";
            $mysql .= $table_data[0]['Create Table'].";\r\n\r\n";

            // 获取表数据内容
            $table_content = $M->query("select * from `$table`");

            // print_r($table_content);

            foreach ($table_content as $k => $v) {
                $keys = array_keys($v);
                $keys = array_map('addslashes',$keys);
                $keys = join("`,`",$keys);
                $keys = "`".$keys."`";

                $vals = array_values($v);
                $vals = array_map('addslashes',$vals); 
                $vals = join("','",$vals); 
                $vals = "'".$vals."'";

                $mysql.="insert into `$table`($keys) values($vals);\r\n";
            }

            $mysql.="\r\n";
        }

        // print_r("<pre >");
        // print_r($mysql);

        $filename=date('Y-m-d').".sql"; //文件名为当天的日期

        // print_r($filename);
        $fp = @fopen($filename,'w'); 
        @fputs($fp,$mysql); 
        @fclose($fp); 
        echo "back up, just ok !".$filename; 

    }
?>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值