使用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 相关文章推荐
php4的session功能评述(二)
Oct 09 PHP
php json_encode奇怪问题说明
Sep 27 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
php遍历目录方法小结
Mar 10 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
php提交post数组参数实例分析
Dec 17 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
德生BCL3000的电路分析和打磨
2021/03/02 无线电
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
PHP守护进程实例
2015/03/06 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
python3 实现口罩抽签的功能
2020/03/11 Python
如何利用Python识别图片中的文字
2020/05/31 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
妈妈活动方案
2014/08/15 职场文书
员工离职证明范本
2015/06/12 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
MySQL数据库之存储过程 procedure
2022/06/16 MySQL