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 相关文章推荐
利用discuz自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
php简单浏览目录内容的实现代码
Jun 07 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
简单介绍PHP的责任链编程模式
Aug 11 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
May 30 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 PHP
php strftime函数获取日期时间(switch用法)
May 16 PHP
CI框架附属类用法分析
Dec 26 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
thinkphp框架类库扩展操作示例
Nov 26 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
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
javascript dom 基本操作小结
2010/04/11 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
跟老齐学Python之正规地说一句话
2014/09/28 Python
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
Python迭代和迭代器详解
2016/11/10 Python
Python3 socket同步通信简单示例
2017/06/07 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
简历自我评价怎么写好呢?
2014/01/04 职场文书
运动会方队口号
2014/06/07 职场文书
男性健康日的活动方案
2014/08/18 职场文书
法制教育演讲稿
2014/09/10 职场文书
数学教师个人总结
2015/02/06 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
oracle索引总结
2021/09/25 Oracle
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers