tp5 备份数据库:use think/Config
public function  mysql()
    {
        @$falg=file_get_contents("./install/sql/database.sql");
        if($falg==true){
            unlink("./install/sql/database.sql");
        }
        set_time_limit(0);
        $config=Config::get('database');
        $link=mysqli_connect($config['hostname'],$config['username'],$config['password']);
        mysqli_select_db($link,$config['database']);
        $res=Db::query("show tables");
        $tabList=array();
        foreach($res as $k=>$v){
            foreach($v as $val){
                array_push($tabList,$val);}
        }
        $to_file_name = "./install/sql/database.sql";
        $info = "-- ----------------------------\r\n";
        $info .= "-- 日期:".date("Y-m-d H:i:s",time())."\r\n";
        $info .= "-- @qq.com\r\n";
        $info .= "-- ----------------------------\r\n\r\n";
        file_put_contents($to_file_name,$info,FILE_APPEND);

//将每个表的表结构导出到文件
        foreach($tabList as $val){
            $sql = "show create table ".$val;

            $row =Db::query($sql);

            $info = "-- ----------------------------\r\n";
            $info .= "-- Table structure for `".$val."`\r\n";
            $info .= "-- ----------------------------\r\n";
            $info .= "DROP TABLE IF EXISTS `".$val."`;\r\n";
            $sqlStr = $info.$row[0]['Create Table'].";\r\n\r\n";
            //追加到文件
            file_put_contents($to_file_name,$sqlStr,FILE_APPEND);

            //将每个表的数据导出到文件
            $sql = "select * from ".$val;
            $res =Db::query($sql);
            //如果表中没有数据,则继续下一张表
            if(empty($res)) continue;
            //
            $info = "-- ----------------------------\r\n";
            $info .= "-- Records for `".$val."`\r\n";
            $info .= "-- ----------------------------\r\n";
            file_put_contents($to_file_name,$info,FILE_APPEND);
            //读取数据

            foreach($res as $key=>$value){
                $row=array_values($value);
                $sqlStr = "INSERT INTO `".$val."` VALUES (";
                foreach($row as $zd){
                    $sqlStr .= "'".mysqli_escape_string($link,$zd)."', ";
                }
                //去掉最后一个逗号和空格
                $sqlStr = substr($sqlStr,0,strlen($sqlStr)-2);
                $sqlStr .= ");\r\n";
                file_put_contents($to_file_name,$sqlStr,FILE_APPEND);
            }
            //释放资源

            file_put_contents($to_file_name,"\r\n",FILE_APPEND);

        }

        $returnData['status'] = 1;
        $returnData['msg'] = "备份成功";
        return json_encode($returnData);

    }

标签: none

添加新评论