使用PHP备份MYSQL数据的多种方法


Posted in PHP onJanuary 15, 2014

下面提供两种方法,仅供研究使用。

第1种方法:

<?php
$host="localhost";
$user="root";
$password="";
$dbname="dbname";
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql= "set names utf8;";
mysql_query($mysql);
$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'].";\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);\n";
}
$mysql.="\n";
}
$filename=$dbname.date('Ymj').".sql";
$fp = fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo "数据备份成功,生成备份文件".$filename;
?>

第2种方法:

<?php
$host="localhost";
$user="root";
$password="";
$dbname="dbname";
backup_tables($host,$user,$password,$dbname);
/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
  $link = mysql_connect($host,$user,$pass);
  mysql_select_db($name,$link);
  //get all of the tables
  if($tables == '*')
  {
    $tables = array();
    $result = mysql_query('SHOW TABLES');
    while($row = mysql_fetch_row($result))
    {
      $tables[] = $row[0];
    }
  }
  else
  {
    $tables = is_array($tables) ? $tables : explode(',',$tables);
  }
  $return = '';
  //cycle through
  foreach($tables as $table)
  {
    $result = mysql_query('SELECT * FROM '.$table);
    $num_fields = mysql_num_fields($result);    
    $return.= 'DROP TABLE '.$table.';';
    $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
    $return.= "\n\n".$row2[1].";\n\n";
    for ($i = 0; $i < $num_fields; $i++) 
    {
      while($row = mysql_fetch_row($result))
      {
        $return.= 'INSERT INTO '.$table.' VALUES(';
        for($j=0; $j<$num_fields; $j++) 
        {
          $row[$j] = addslashes($row[$j]);
          $row[$j] = ereg_replace("\n","\\n",$row[$j]);
          if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
          if ($j<($num_fields-1)) { $return.= ','; }
        }
        $return.= ");\n";
      }
    }
    $return.="\n\n\n";
  }
  //save file
  $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
  fwrite($handle,$return);
  fclose($handle);
}
?>
PHP 相关文章推荐
实用函数5
Nov 08 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
简单的php缓存类分享     php缓存机制
Jan 22 PHP
使用PHP进行微信公众平台开发的示例
Aug 21 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
php使用yield对性能提升的测试实例分析
Sep 19 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
PHP编程风格规范分享
Jan 15 #PHP
php object转数组示例
Jan 15 #PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 #PHP
PHP类继承 extends使用介绍
Jan 14 #PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 #PHP
PHP mail()函数使用及配置方法
Jan 14 #PHP
PHP 登录完成后如何跳转上一访问页面
Jan 14 #PHP
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
php unlink()函数使用教程
2018/07/12 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
ASP Json Parser修正版
2009/12/06 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
python 实现归并排序算法
2012/06/05 Python
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
python比较两个列表是否相等的方法
2015/07/28 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
python做反被爬保护的方法
2019/07/01 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
网吧消防安全制度
2014/01/28 职场文书
项目经理任命书内容
2014/06/06 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
如何理解及使用Python闭包
2021/06/01 Python