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+java实现自动新闻滚动窗口
Oct 09 PHP
php 文件状态缓存带来的问题
Dec 14 PHP
建站常用13种PHP开源CMS比较
Aug 23 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
PHP手机短信验证码实现流程详解
May 17 PHP
微信公众号之主动给用户发送消息功能
Jun 22 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 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获取金书网的书名的实现代码
2010/06/11 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
一段实用的php验证码函数
2016/05/19 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
python中的django是做什么的
2020/07/31 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
四风问题自查报告剖析材料
2014/02/08 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
安全责任书范文
2014/08/25 职场文书
考试作弊检讨书
2015/01/27 职场文书
高一地理教学工作总结
2015/08/12 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang
python Tkinter模块使用方法详解
2022/04/07 Python