使用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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
PHP详细彻底学习Smarty
Mar 27 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
浅谈json_encode用法
Mar 05 PHP
PHP实现获取文件后缀名的几种常用方法
Aug 08 PHP
thinkPHP2.1自定义标签库的导入方法详解
Jul 20 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
php中try catch捕获异常实例详解
Aug 06 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 ios推送(代码)
2013/07/01 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
jQuery实现遍历XML节点和属性的方法示例
2018/04/29 jQuery
100行代码实现一个vue分页组功能
2018/11/06 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
python静态方法实例
2015/01/14 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
Python中的全局变量如何理解
2020/06/04 Python
简短证婚人证婚词
2014/01/09 职场文书
家长写给孩子的评语
2014/04/18 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
个人工作年终总结
2015/03/09 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
教师师德承诺书2016
2016/03/25 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python