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 全局变量范围分析
Aug 07 PHP
ajax+php打造进度条 readyState各状态
Mar 20 PHP
PHP原理之异常机制深入分析
Aug 08 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
php中inlcude()性能对比详解
Sep 16 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
php返回json数据函数实例
Oct 09 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
PHP中addcslashes与stripcslashes函数用法分析
Jan 07 PHP
php使用number_format函数截取小数的方法分析
May 27 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
浅谈php常用的7大框架的优缺点
Jul 20 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中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
拖动一个HTML元素
2006/12/22 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
PHP开发的一般流程
2013/08/13 面试题
导游的职业规划书范文
2013/12/27 职场文书
光盘行动倡议书
2014/02/02 职场文书
交通事故调解协议书
2014/04/16 职场文书
工作会议方案
2014/05/21 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
地道战观后感
2015/06/04 职场文书
如何写好活动总结
2019/06/21 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS