博主信息
Fire的博客
博文
9
粉丝
0
评论
0
访问量
29257
积分:0
P豆:18

thinkphp实现对MySQL数据库实现备份功能

2018年11月01日 15:00:55阅读数:1077博客 / Fire的博客/ thinkphp5

thinkphp实现对MySQL数据库实现备份功能

public function exportDatabase(){
header("Content-type:text/html;charset=utf-8");
$path = C('ROOT_MYSQL_PATH');
$model = M();
//查询所有表
$sql="show tables";
$result=$model->query($sql);
//print_r($result);exit;
//echo "运行中,请耐心等待...<br/>";
$info = "-- ----------------------------\r\n";
$info .= "-- 日期:".date("Y-m-d H:i:s",time())."\r\n";
$info .= "-- MySQL - 5.1.73 : Database - ".C('DB_NAME')."\r\n";
$info .= "-- ----------------------------\r\n\r\n";
$info .= "CREATE DATAbase IF NOT EXISTS `".C('DB_NAME')."` DEFAULT CHARACTER SET utf8 ;\r\n\r\n";
$info .= "USE `".C('DB_NAME')."`;\r\n\r\n";
// 检查目录是否存在
if(is_dir($path)){
//echo '目录存在';
// 检查目录是否可写
if(is_writable($path)){
//echo '目录可写';exit;
}else{
echo '目录不可写';exit;
//chmod($path,0777);
}
}else{
//echo '目录不存在';exit;
// 新建目录
mkdir($path, 0777, true);
//chmod($path,0777);
}
// 检查文件是否存在
$file_name = $path.C('DB_NAME').'-'.date("Y-m-d",time()).'.sql';
if(file_exists($file_name)){
echo "数据备份文件已存在!";
exit;
}
file_put_contents($file_name,$info,FILE_APPEND);
foreach ($result as $k=>$v) {
//查询表结构
$val = $v['tables_in_'.C('DB_NAME')];
$sql_table = "show create table ".$val;
$res = $model->query($sql_table);
//print_r($res);exit;
$info_table = "-- ----------------------------\r\n";
$info_table .= "-- Table structure for `".$val."`\r\n";
$info_table .= "-- ----------------------------\r\n\r\n";
$info_table .= "DROP TABLE IF EXISTS `".$val."`;\r\n\r\n";
$info_table .= $res[0]['create table'].";\r\n\r\n";
//查询表数据
$info_table .= "-- ----------------------------\r\n";
$info_table .= "-- Data for the table `".$val."`\r\n";
$info_table .= "-- ----------------------------\r\n\r\n";
file_put_contents($file_name,$info_table,FILE_APPEND);
$sql_data = "select * from ".$val;
$data = $model->query($sql_data);
//print_r($data);exit;
$count= count($data);
//print_r($count);exit;
if($count<1) continue;
foreach ($data as $key => $value){
$sqlStr = "INSERT INTO `".$val."` VALUES (";
foreach($value as $v_d){
$v_d = str_replace("'","\'",$v_d);
$sqlStr .= "'".$v_d."', ";
}
//去掉最后一个逗号和空格
$sqlStr = substr($sqlStr,0,strlen($sqlStr)-2);
$sqlStr .= ");\r\n";
file_put_contents($file_name,$sqlStr,FILE_APPEND);
}
$info = "\r\n";
file_put_contents($file_name,$info,FILE_APPEND);
}
echo "OK!";
}
---------------------
作者:请叫我郝先生
来源:CSDN
原文:https://blog.csdn.net/haoyunyun888/article/details/54999963
版权声明:本文为博主原创文章,转载请附上博文链接!

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 区别:1、MySQL倾向于使用者的角度;pg倾向于理论角度。2、MySQL一般会将合法性验证交给客户;pg在合法性难方面做得比较严格。
    MySQL 8.0新有:1、在包含事务字典;2、附带Atomic DDL语句支持;3、增强安全性和账户管理;4、资源管理的改进;5、新型锁等等。
    这篇文章主要介绍了php+mysql查询无限下级分类树输出,结合例形式分析了php+MySQL查询的树状分类输出,涉及php查询与组遍历等相关操作技巧,需要的朋友可以参考下。
    用mysqli方法 以下:1、连接MySQL服务器;2、创建一个名为test的;3、在该内创建一个名为“testTable”的表,表至少包含三个字段,字段名字、类型和属性自定
    nodejs如何添加和查询?下面本篇文章带大家了解一下基于node.js添加和查询的方法,希望大家有所帮助!
    php搜索的方法:首先创建MySQL;然后建立config.php文件,用于连接;接着建立search.html文件,用于创建搜索表单页,提交搜索内容;最后建立search.php文件
    php收藏方法:首先创建好表 ;然后创建前台代码,登录界面;接着通过html收藏样式;最后使用php进行后台处理即可。
    这篇文章主要介绍了【php+pdo】的购物车类,结合完整例形式分析了PHP结合pdo操作读写购物车相关与使用方法,需要的朋友可以参考下。
    下面由thinkphp教程栏目给大家介绍TP5中redirect方法重定向及带参跳转,希望需要的朋友有所帮助!
    本文讲述了在php中简易的留言板,简单的说就是 的创建,添加,显示在前端上。
    下面由thinkphp框架教程栏目给大家介绍thinkPHP使用migrate迁移的方法,希望需要的朋友有所帮助!
    vuejs的生命周期是指vue象从创建之初到销毁的过程,vue所有都是围绕其生命周期进行的,在生命周期的不同阶段调用应的钩子函可以组件管理和DOM渲染两大重要
    ​在日常开发的业务环境中,我们一般都会使用 MySQL 语句来分页的。但是,往往也有些并不多,或者只是获取 PHP 中定义的一些时需要分页的
    计算机网络是指连接分散计算机设信息传递的计算机系统。计算机网络主要包括资源共享,信息的快速传递,提高可靠性,提供负载均衡与分布式处理力,集中管理以及综合信息服务。
    管理系统通常提供授权来控制不同用户访问的权限,这主要是为了的安全性。
    php添加删除方法:首先通过form表单创建一个登录的页面;然后在主页面上建立一个表格,让以表格的;最后用a标签关联到删除页面即可。
    php一个账号只有一个人登录的方法:首先将session信息存在redis中;然后将session_id存到mysql中;接着验证session是否过期;最后利用openfire推送消息,并将
    本文为大家分享了layui分页的代码,具有一定的参考价值,希望大家有所帮助。
    php点赞取消的方法:首先判断用户是否点赞;然后根是否点赞,载入不同的html;接着调用不同的方法,进行增加或减少操作即可。
    PHP的支付宝支付:首先,查看支付宝异步回调的文档,在异步回调里面再写一个接口,每次回调取到后,查询看看有没有;然后,回调处理中验签通过核