使用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 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
PHP 文件类型判断代码
Mar 13 PHP
joomla内置的表单验证功能使用方法
Jun 11 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
PHP编程基本语法快速入门手册
Jan 07 PHP
php workerman定时任务的实现代码
Dec 23 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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实现WEB动态网页静态
2006/10/09 PHP
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
javascript 动态添加表格行
2006/06/22 Javascript
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
浅谈Python中带_的变量或函数命名
2017/12/04 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
python实现括号匹配的思路详解
2018/08/23 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
python爬取淘宝商品销量信息
2018/11/16 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
斯凯奇澳大利亚官网:SKECHERS澳大利亚
2018/03/31 全球购物
关爱留守儿童倡议书
2014/04/15 职场文书
高中军训的心得体会
2014/09/01 职场文书
2014年教学工作总结
2014/11/13 职场文书
房屋买卖协议样本
2014/11/16 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
浅析Django接口版本控制
2021/06/26 Python
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js