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 header()函数使用说明
Jul 10 PHP
超级实用的7个PHP代码片段分享
Jan 05 PHP
PHP内核探索:变量概述
Jan 30 PHP
php查询ip所在地的方法
Dec 05 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
php简单实现MVC
Feb 05 PHP
php循环table实现一行两列显示的方法
Jun 04 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
基于laravel Request的所有方法详解
Sep 29 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
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
vue二级路由设置方法
2018/02/09 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Python2与Python3的区别详解
2020/02/09 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
Python3 读取Word文件方式
2020/02/13 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
运动会解说词200字
2014/02/06 职场文书
爱护公物标语
2014/06/24 职场文书
收款委托书范本
2014/09/11 职场文书
超市开店计划书
2014/09/15 职场文书
捐书活动倡议书
2015/04/27 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
基于Redis的List实现特价商品列表功能
2021/08/30 Redis