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 相关文章推荐
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
简单的php 验证图片生成函数
May 21 PHP
PHP+ajax 无刷新删除数据
Feb 20 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
May 15 PHP
smarty 缓存控制前的页面静态化原理
Mar 15 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 PHP
PHP实现通过get方式识别用户发送邮件的方法
Jul 16 PHP
10款PHP开源商城系统汇总介绍
Jul 23 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 PHP
PHP实现简易blog的制作
Oct 24 PHP
Laravel向公共模板赋值方法总结
Jun 25 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
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
详解PHP数组赋值方法
2015/11/07 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
jquery tools系列 expose 学习
2009/09/06 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
python实现汉诺塔递归算法经典案例
2021/03/01 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
python操作excel的方法
2018/08/16 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
在django中,关于session的通用设置方法
2019/08/06 Python
python创建文本文件的简单方法
2020/08/30 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
宿舍使用违章电器检讨书
2014/01/12 职场文书
企业精神口号
2014/06/11 职场文书
雷人标语集锦
2014/06/19 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
家长给老师的感谢信
2015/01/20 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
女性励志书籍推荐
2019/08/19 职场文书
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android