使用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 服务器配置(使用Apache及IIS两种方法)
Jun 01 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
PHP中变量引用与变量销毁机制分析
Nov 15 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
php微信支付之APP支付方法
Mar 04 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
Ajax+PHP实现的分类列表框功能示例
Feb 11 PHP
php桥接模式应用案例分析
Oct 23 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
php5 图片验证码实现代码
2009/12/11 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
基于jquery的图片懒加载js
2010/06/30 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
node.js require() 源码解读
2015/12/13 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
js实现搜索栏效果
2018/11/16 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
解决Django中多条件查询的问题
2019/07/18 Python
Python列表推导式实现代码实例
2020/09/09 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
Linux如何压缩可执行文件
2014/03/27 面试题
酒店个人培训自我鉴定
2013/12/11 职场文书
门面房租房协议书
2014/08/20 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
企业投资意向书
2015/05/09 职场文书
让生命充满爱观后感
2015/06/08 职场文书
任命书格式模板
2015/09/22 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
python热力图实现的完整实例
2022/06/25 Python