php简单备份与还原MySql的方法


Posted in PHP onMay 09, 2016

本文实例讲述了php简单备份与还原MySql的方法。分享给大家供大家参考,具体如下:

一、备份:

<?php
header ( "content-Type: text/html; charset=utf-8" );
//备份数据库
$host="localhost";
$user="root";//数据库账号
$password="123456";//数据库密码
$dbname="test";//数据库名称
//这里的账号、密码、名称都是从页面传过来的
if(!mysql_connect($host,$user,$password)) //连接mysql数据库
{
 echo '数据库连接失败,请核对后再试';
 exit;
}
if(!mysql_select_db($dbname)) //是否存在该数据库
{
 echo '不存在数据库:'.$dbname.',请核对后再试';
 exit;
}
mysql_query("set names 'utf8'");
$mysql= "set charset utf8;\r\n";
$q1=mysql_query("show tables");
while($t=mysql_fetch_array($q1)){
  $table=$t[0];
  $q2=mysql_query("show create table `$table`");
  $sql=mysql_fetch_array($q2);
  $mysql.=$sql['Create Table'].";\r\n";
  $q3=mysql_query("select * from `$table`");
  while($data=mysql_fetch_assoc($q3)){
    $keys=array_keys($data);
    $keys=array_map('addslashes',$keys);
    $keys=join('`,`',$keys);
    $keys="`".$keys."`";
    $vals=array_values($data);
    $vals=array_map('addslashes',$vals);
    $vals=join("','",$vals);
    $vals="'".$vals."'";
    $mysql.="insert into `$table`($keys) values($vals);\r\n";
  }
}
$filename="data/".$dbname.date('Ymjgi').".sql"; //存放路径,默认存放到项目最外层
$fp = fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo "数据备份成功";
?>

二、还原

<!--
 author:果冻
 qq:52091199
 blog:http://wyg517.blog.163.com
-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$filename = "test20101216923.sql";
$host="localhost"; //主机名
$user="root"; //MYSQL用户名
$password="123456"; //密码
$dbname="test"; //在此指定您要恢复的数据库名,不存在则必须先创建,请自已修改数据库名
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql_file="data/".$filename; //指定要恢复的MySQL备份文件路径,请自已修改此路径
restore($mysql_file); //执行MySQL恢复命令
function restore($fname)
 {
 if (file_exists($fname)) {
  $sql_value="";
  $cg=0;
  $sb=0;
  $sqls=file($fname);
  foreach($sqls as $sql)
  {
  $sql_value.=$sql;
  }
  $a=explode(";\r\n", $sql_value); //根据";\r\n"条件对数据库中分条执行
  $total=count($a)-1;
  mysql_query("set names 'utf8'");
  for ($i=0;$i<$total;$i++)
  {
  mysql_query("set names 'utf8'");
  //执行命令
  if(mysql_query($a[$i]))
  {
   $cg+=1;
  }
  else
  {
   $sb+=1;
   $sb_command[$sb]=$a[$i];
  }
  }
  echo "操作完毕,共处理 $total 条命令,成功 $cg 条,失败 $sb 条";
  //显示错误信息
  if ($sb>0)
  {
  echo "<hr><br><br>失败命令如下:<br>";
  for ($ii=1;$ii<=$sb;$ii++)
  {
   echo "<p><b>第 ".$ii." 条命令(内容如下):</b><br>".$sb_command[$ii]."</p><br>";
  }
  }  //-----------------------------------------------------------
 }else{
  echo "MySQL备份文件不存在,请检查文件路径是否正确!";
 }
 }
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP学习笔记之数组篇
Jun 28 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 PHP
有关PHP性能优化的介绍
Jun 20 PHP
php_screw 1.5:php加密: 安装与使用详解
Jun 20 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
php class类的用法详细总结
Oct 17 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
php中file_exists函数使用详解
May 08 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
May 09 #PHP
php简单复制文件的方法
May 09 #PHP
win10环境PHP 7 安装配置【教程】
May 09 #PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 #PHP
php自动提交表单的方法(基于fsockopen与curl)
May 09 #PHP
php简单实现多语言切换的方法
May 09 #PHP
深入浅析PHP无限极分类的案例教程
May 09 #PHP
You might like
深入解析php模板技术原理【一】
2008/01/10 PHP
php include,include_once,require,require_once
2008/09/05 PHP
php通过ajax实现双击table修改内容
2014/04/28 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
自写的一个jQuery圆角插件
2010/10/26 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
python实现简单的学生管理系统
2021/02/22 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
客户表扬信范文
2014/01/10 职场文书
师生聚会感言
2014/01/26 职场文书
买房协议书
2014/04/11 职场文书
大型公益活动策划方案
2014/08/20 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
客服专员岗位职责
2015/02/10 职场文书
小浪底导游词
2015/02/12 职场文书
中秋节随笔
2015/08/15 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers