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面向对象学习笔记之一 基础概念
Oct 06 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
php中判断数组是一维,二维,还是多维的解决方法
May 04 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
Jul 05 PHP
php中将一段数据存到一个txt文件中并显示其内容
Aug 15 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
静态html文件执行php语句的方法(推荐)
Nov 21 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
WHOOPS PHP调试库的使用
Sep 29 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 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数组操作汇总 php数组的使用技巧
2011/07/17 PHP
php制作简单模版引擎
2016/04/07 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
PHP实现简易图形计算器
2020/08/28 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
Python创建xml文件示例
2017/03/22 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
django基于restframework的CBV封装详解
2019/08/08 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
船舶专业个人求职信范文
2014/01/02 职场文书
拓展培训心得体会
2014/01/04 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
党员志愿者活动总结
2014/06/26 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
导游词之江南周庄
2019/12/06 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
Django模型层实现多表关系创建和多表操作
2021/07/21 Python