使用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 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
收藏的一个php小偷的核心程序
Apr 09 PHP
几个php应用技巧
Mar 27 PHP
php 表单验证实现代码
Mar 10 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
通过dbi使用perl连接mysql数据库的方法
Apr 16 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
分享常见的几种页面静态化的方法
Jan 08 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
php实现分页显示
Nov 03 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 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
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
php取出数组单个值的方法
2018/03/12 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
jQuery实现简单弹幕制作
2020/12/10 jQuery
python文件和目录操作方法大全(含实例)
2014/03/12 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
python之列表推导式的用法
2019/11/29 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
简单了解Django项目应用创建过程
2020/07/06 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
某公司面试题
2012/03/05 面试题
工商管理专业毕业生求职信
2014/05/26 职场文书
会计专业自荐书
2014/07/08 职场文书
离婚协议书范文2015
2015/01/26 职场文书
裁员通知
2015/04/25 职场文书
Java 多线程并发FutureTask
2022/06/28 Java/Android