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 相关文章推荐
ip签名探针
Oct 09 PHP
解析thinkphp中的M()与D()方法的区别
Jun 22 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
php实现求相对时间函数
Jun 15 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
利用PHP如何写APP接口详解
Aug 23 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 PHP
微信小程序结合ThinkPHP5授权登陆后获取手机号
Nov 23 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 设计模式之观察者模式介绍
2012/02/22 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
原生js实现分页效果
2020/09/23 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
Python获取网页上图片下载地址的方法
2015/03/11 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
Python3计算三角形的面积代码
2017/12/18 Python
django反向解析和正向解析的方式
2018/06/05 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
对python 命令的-u参数详解
2018/12/03 Python
Python Cookie 读取和保存方法
2018/12/28 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
高校教师自荐信范文
2014/03/13 职场文书
工地宣传标语
2014/06/18 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书