PHP备份/还原MySQL数据库的代码


Posted in PHP onJanuary 06, 2011

以下是代码:

一、备份数据库并下载到本地【db_backup.php】

<?php 
// 设置SQL文件保存文件名 
$filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql"; 
// 所保存的文件名 
header("Content-disposition:filename=".$filename); 
header("Content-type:application/octetstream"); 
header("Pragma:no-cache"); 
header("Expires:0"); 
// 获取当前页面文件路径,SQL文件就导出到此文件夹内 
$tmpFile = (dirname(__FILE__))."\\".$filename; 
// 用MySQLDump命令导出数据库 
exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile); 
$file = fopen($tmpFile, "r"); // 打开文件 
echo fread($file,filesize($tmpFile)); 
fclose($file); 
exit; 
?>

二、还原数据库【db_restore.php】
<form id="form1" name="form1" method="post" action=""> 
【数据库SQL文件】:<input id="sqlFile" name="sqlFile" type="file" /> 
<input id="submit" name="submit" type="submit" value="还原" /> 
</form> 
<?php 
// 我的数据库信息都存放到config.php文件中,所以加载此文件,如果你的不是存放到该文件中,注释此行即可; 
require_once((dirname(__FILE__).'/../../include/config.php')); 
if ( isset ( $_POST['sqlFile'] ) ) 
{ 
$file_name = $_POST['sqlFile']; //要导入的SQL文件名 
$dbhost = $cfg_dbhost; //数据库主机名 
$dbuser = $cfg_dbuser; //数据库用户名 
$dbpass = $cfg_dbpwd; //数据库密码 
$dbname = $cfg_dbname; //数据库名 set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入 
$fp = @fopen($file_name, "r") or die("不能打开SQL文件 $file_name");//打开文件 
mysql_connect($dbhost, $dbuser, $dbpass) or die("不能连接数据库 $dbhost");//连接数据库 
mysql_select_db($dbname) or die ("不能打开数据库 $dbname");//打开数据库 
echo "<p>正在清空数据库,请稍等....<br>"; 
$result = mysql_query("SHOW tables"); 
while ($currow=mysql_fetch_array($result)) 
{ 
mysql_query("drop TABLE IF EXISTS $currow[0]"); 
echo "清空数据表【".$currow[0]."】成功!<br>"; 
} 
echo "<br>恭喜你清理MYSQL成功<br>"; 
echo "正在执行导入数据库操作<br>"; 
// 导入数据库的MySQL命令 
exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name); 
echo "<br>导入完成!"; 
mysql_close(); 
} 
?>
PHP 相关文章推荐
php访问查询mysql数据的三种方法
Oct 09 PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
PHP 正则表达式小结
Feb 12 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
thinkPHP实现将excel导入到数据库中的方法
Apr 22 PHP
php简单实现批量上传图片的方法
May 09 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
PHP7 弃用功能
Mar 09 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 #PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 #PHP
Discuz Uchome ajaxpost小技巧
Jan 04 #PHP
php INI配置文件的解析实现分析
Jan 04 #PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 #PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 #PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 #PHP
You might like
thinkPHP交易详情查询功能详解
2016/12/02 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
幼师专业毕业生自荐信
2013/09/29 职场文书
高级销售员求职信
2013/10/25 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
设备收款委托书范本
2014/10/02 职场文书
铁路安全反思材料
2014/12/24 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript