使用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
解析htaccess伪静态的规则
Jun 18 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
php常见的魔术方法详解
Dec 25 PHP
php格式化金额函数分享
Feb 02 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 PHP
CI框架入门之MVC简单示例
Nov 21 PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 PHP
PHP封装cURL工具类与应用示例
Jul 01 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中addslashes函数与sql防注入
2014/11/17 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
python 数据加密代码
2008/12/24 Python
python通过函数属性实现全局变量的方法
2015/05/16 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
生产现场工艺工程师岗位职责
2013/11/28 职场文书
初一体育教学反思
2014/01/29 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
大一新生学期自我评价
2014/04/09 职场文书
小学生通知书评语
2014/12/31 职场文书
盲山观后感
2015/06/11 职场文书
草房子读书笔记
2015/06/29 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
nginx请求限制配置方法
2021/07/09 Servers