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 strcmp使用说明
Apr 22 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
Aug 01 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
PHP常用数组函数介绍
Jul 28 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
Aug 01 PHP
PHP操作Postgresql封装类与应用完整实例
Apr 24 PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 PHP
让你的PHP,APACHE,NGINX支持大文件上传
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
php实现的css文件背景图片下载器代码
2014/11/11 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
video.js添加自定义组件的方法
2020/12/09 Javascript
python中xrange和range的区别
2014/05/13 Python
python实现将文本转换成语音的方法
2015/05/28 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
我的网上商城创业计划书
2013/12/26 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
农业开发项目建议书
2014/05/16 职场文书
劳模事迹材料范文
2014/12/24 职场文书
表扬稿格式范文
2015/01/16 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书