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引用(&amp;)各种使用方法实例详解
Mar 20 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
PHP 实现类似js中alert() 提示框
Mar 18 PHP
php简单日历函数
Oct 28 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
PHP getDocNamespaces()函数讲解
Feb 03 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
PHP系统流量分析的程序
2006/10/09 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
PHP开发注意事项总结
2015/02/04 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
详细介绍Python函数中的默认参数
2015/03/30 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
详解Python yaml模块
2020/09/23 Python
python给list排序的简单方法
2020/12/10 Python
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
圣彼得堡鲜花配送:Semicvetic
2020/09/15 全球购物
毕业自荐书
2013/12/09 职场文书
初中美术教学反思
2014/01/29 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
捐款活动总结
2014/08/27 职场文书
培训班通知
2015/04/25 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python
Go 语言中 20 个占位符的整理
2021/10/16 Golang