使用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 相关文章推荐
15个小时----从修改程序到自己些程序
Oct 09 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 PHP
允许phpmyadmin空密码登录的配置方法
May 29 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
PHP开发之用微信远程遥控服务器
Jan 25 PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
php网上商城购物车设计代码分享
2012/02/15 PHP
php 生成短网址原理及代码
2014/01/23 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
一个JQuery操作Table的代码分享
2012/03/30 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
临床医学大学生求职信
2013/09/28 职场文书
护士实习生自我鉴定范文
2013/12/10 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
校车司机安全责任书
2015/05/11 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫