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 相关文章推荐
第三节--定义一个类
Nov 16 PHP
php中随机显示图片的函数代码
Jun 23 PHP
深入array multisort排序原理的详解
Jun 18 PHP
通过dbi使用perl连接mysql数据库的方法
Apr 16 PHP
php读取文件内容的方法汇总
Jan 24 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP弹出对话框技巧详细解读
Sep 26 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
详细分析PHP 命名空间(namespace)
Jun 30 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几个数学计算的内部函数学习整理
2011/08/06 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
php实现解析xml并生成sql语句的方法
2018/02/03 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
python分布式环境下的限流器的示例
2017/10/26 Python
Python自定义线程类简单示例
2018/03/23 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
任命书模板
2014/06/04 职场文书
物资采购方案
2014/06/12 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
MySQL详细讲解变量variables的用法
2022/06/21 MySQL