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 缓冲的免费实现方法
Oct 09 PHP
也谈php网站在线人数统计
Apr 09 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
php的ddos攻击解决方法
Jan 08 PHP
如何实现php图片等比例缩放
Jul 28 PHP
四个PHP非常实用的功能
Sep 29 PHP
PHP上传图片、删除图片简单实例
Nov 12 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
使用Codeigniter重写insert的方法(推荐)
Mar 23 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
laravel中Redis队列监听中断的分析
Sep 14 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
基于文本的留言簿
2006/10/09 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
基于Python的身份证号码自动生成程序
2014/08/15 Python
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
Python KMeans聚类问题分析
2018/02/23 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
python版DDOS攻击脚本
2019/06/12 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
python颜色随机生成器的实例代码
2020/01/10 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
企业文化宣传标语
2014/06/09 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
档案工作个人总结
2015/03/03 职场文书
离婚起诉书范文2016
2015/11/26 职场文书