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大批量数据操作时临时调整内存与执行时间的方法
Apr 20 PHP
PHP 防注入函数(格式化数据)
Aug 08 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
php中创建和调用webservice接口示例
Jul 25 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
php上传excel表格并获取数据
Apr 27 PHP
thinkPHP框架中执行事务的方法示例
May 31 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
python函数与方法的区别总结
2019/06/23 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
高中家长寄语
2014/04/02 职场文书
关于环保的建议书
2014/05/12 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
公司档案管理制度
2015/08/05 职场文书
八年级历史教学反思
2016/02/19 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
Python实现机器学习算法的分类
2021/06/03 Python