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 相关文章推荐
PHPMyAdmin 快速配置方法
May 11 PHP
Discuz 模板语句分析及知识技巧
Aug 21 PHP
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
php字符串截取函数mb_substr用法实例分析
Jun 25 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 file_exists问题杂谈
2012/05/07 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
php微信开发之谷歌测距
2018/06/14 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
javascript实现滑动解锁功能
2014/12/31 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
React学习笔记之事件处理(二)
2017/07/02 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
python进阶_浅谈面向对象进阶
2017/08/17 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
关于Python解包知识点总结
2020/05/05 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
毕业生个人求职信范文分享
2014/01/05 职场文书
亲子读书活动方案
2014/02/22 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书