使用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执行速率优化技巧小结
Mar 15 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
跟我学Laravel之快速入门
Oct 15 PHP
php实现上传图片文件代码
Jul 19 PHP
php面向对象编程self和static的区别
May 08 PHP
PHP常见的6个错误提示及解决方法
Jul 07 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
php实现的读取CSV文件函数示例
Feb 07 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
laravel 实现划分admin和home 模块分组
Oct 15 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
如何去掉文章里的 html 语法
2006/10/09 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
分享一下贝贝成长进度的php代码
2012/09/14 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
Jquery 基础学习笔记
2009/05/29 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
pandas对指定列进行填充的方法
2018/04/11 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
Java程序员面试90题
2013/10/19 面试题
事业单位考核材料
2014/05/21 职场文书
2014年工程工作总结
2014/11/25 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
革命电影观后感
2015/06/18 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
Python入门学习之类的相关知识总结
2021/05/25 Python
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL