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 相关文章推荐
一个查看session内容的函数
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 PHP
php调用C代码的实现方法
Mar 11 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
Jul 01 PHP
Yii分页用法实例详解
Dec 04 PHP
浅谈PHP中output_buffering
Jul 13 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
php 流程控制switch的简单实例
Jun 07 PHP
php中序列化与反序列化详解
Feb 13 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
php+ajax 文件上传代码实例
Mar 18 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提示Failed to write session data错误的解决方法
2014/12/17 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python二分法实现实例
2013/11/21 Python
wxPython框架类和面板类的使用实例
2014/09/28 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
python基础 range的用法解析
2019/08/23 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
解决pip install psycopg2出错问题
2020/07/09 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
Python如何定义一个函数
2015/09/01 面试题
教师个人工作总结范文2014
2014/11/10 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
项目备案申请报告
2015/05/15 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python