使用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 相关文章推荐
php后退一页表单内容保存实现方法
Jun 17 PHP
php随机显示图片的简单示例
Feb 15 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
smarty简单分页的实现方法
Oct 27 PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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 全文搜索和替换的实现代码
2008/07/29 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
python分割文件的常用方法
2014/11/01 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
Python sorted排序方法如何实现
2020/03/31 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
公司门卫的岗位职责
2014/02/19 职场文书
购房协议书
2014/04/11 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
公证书格式
2015/01/23 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers