使用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 相关文章推荐
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
php while循环得到循环次数
Oct 26 PHP
php中文验证码实现示例分享
Jan 12 PHP
ThinkPHP验证码使用简明教程
Mar 05 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
php格式化json函数示例代码
May 12 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
php版微信小店调用api示例代码
Nov 12 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 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数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python AES加密模块用法分析
2017/05/22 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
详细分析Python collections工具库
2020/07/16 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
有创意的广告词
2014/03/18 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
八年级英语教学计划
2015/01/23 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
Python 中random 库的详细使用
2021/06/03 Python
python基础之模块的导入
2021/10/24 Python