使用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版(3)
Oct 09 PHP
PHP Google的translate API代码
Dec 10 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
php加密解密函数authcode的用法详细解析
Oct 28 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
PHP实现简易blog的制作
Oct 24 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 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 smarty模板引擎的6个小技巧
2014/04/24 PHP
php常见的魔术方法详解
2014/12/25 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
jQuery版Tab标签切换
2011/03/16 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
python 实现堆排序算法代码
2012/06/05 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
python字符串下标与切片及使用方法
2020/02/13 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
党员公开承诺事项
2014/03/25 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
还款承诺书范本
2015/01/20 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
2015年材料员工作总结
2015/04/30 职场文书
家长意见和建议怎么写
2015/06/04 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书