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 相关文章推荐
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
PHP的几个常用加密函数
Feb 03 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
PHP常见字符串操作函数与用法总结
Mar 04 PHP
PHP的new static和new self的区别与使用
Nov 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 Mysql编程之高级技巧
2008/08/27 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
JavaScript 原型与继承说明
2010/06/09 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
urllib2自定义opener详解
2014/02/07 Python
Python中的推导式使用详解
2015/06/03 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Pyqt5实现英文学习词典
2019/06/24 Python
python画图的函数用法以及技巧
2019/06/28 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
党员思想汇报范文
2013/12/30 职场文书
优秀医生事迹材料
2014/02/12 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
2014年建筑工作总结
2014/11/26 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技