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 相关文章推荐
相对路径转化成绝对路径
Apr 10 PHP
php日历[测试通过]
Mar 27 PHP
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
php 缩略图实现函数代码
Jun 23 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 PHP
一个漂亮的php验证码类(分享)
Aug 06 PHP
跟我学Laravel之快速入门
Oct 15 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
详解Laravel框架的依赖注入功能
May 27 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
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
js简易版购物车功能
2017/06/17 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
竞聘书怎么写,如何写?
2014/03/31 职场文书
活动总结的格式
2014/05/07 职场文书
绘画专业自荐信
2014/07/04 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
可可西里观后感
2015/06/08 职场文书
高中班主任心得体会
2016/01/07 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python