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 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
PHP动态变静态原理
Nov 25 PHP
php 批量替换程序的具体实现代码
Oct 04 PHP
header导出Excel应用示例
Jan 24 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
Apr 20 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
php进行md5加密简单实例方法
Sep 19 PHP
PHP如何开启Opcache功能提升程序处理效率
Apr 27 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的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python  连接字符串(join %)
2008/09/06 Python
python显示天气预报
2014/03/02 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
Python 转义字符详细介绍
2017/03/21 Python
使用Python设计一个代码统计工具
2018/04/04 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
一年级语文教学反思
2014/02/13 职场文书
软件售后服务方案
2014/05/29 职场文书
党员个人剖析材料
2014/09/30 职场文书
避暑山庄导游词
2015/02/04 职场文书
oracle重置序列从0开始递增1
2022/02/28 Oracle