php备份数据库类分享


Posted in PHP onApril 14, 2015

php备份数据库类分享

<?php
  /**
  *  
  *  @name php备份数据库 
  *  @param string  $DbHost    连接主机
  *  @param string  $DbUser    用户名
  *  @param string  $DbPwd    连接密码
  *  @param string  $DbName    要备份的数据库
  *  @param string  $saveFileName 要保存的文件名, 默认文件保存在当前文件夹中,以日期作区分
  *  @return Null
  *  @example backupMySqlData('localhost', 'root', '123456', 'YourDbName');
  *
  */
  function backupMySqlData($DbHost, $DbUser, $DbPwd, $DbName, $saveFileName = '')
  {
    header("Content-type:text/html;charset=utf-8");
    error_reporting(0);
    set_time_limit(0);

    echo '数据备份中,请稍候......<br />';

    $link = mysql_connect($DbHost, $DbUser, $DbPwd) or die('数据库连接失败: ' . mysql_error());
    mysql_select_db($DbName) or die('数据库连接失败: ' . mysql_error());
    mysql_query('set names utf8');
    
    // 声明变量
    $isDropInfo   = '';
    $insertSQL   = '';
    $row      = array();
    $tables     = array();
    $tableStructure = array();
    $fileName    = ($saveFileName ? $saveFileName : 'MySQL_data_bakeup_') . date('YmdHis') . '.sql';

    // 枚举该数据库所有的表
    $res = mysql_query("SHOW TABLES FROM $DbName");
    while ($row = mysql_fetch_row($res)) {

      $tables[] = $row[0];

    }
    mysql_free_result($res);

    // 枚举所有表的创建语句
    foreach ($tables as $val) {

      $res = mysql_query("show create table $val", $link);
      $row = mysql_fetch_row($res);

      $isDropInfo   = "DROP TABLE IF EXISTS `" . $val . "`;\r\n";
      $tableStructure = $isDropInfo . $row[1] . ";\r\n";

      file_put_contents($fileName, $tableStructure, FILE_APPEND);
      mysql_free_result($res);
    }

    // 枚举所有表的INSERT语句
    foreach ($tables as $val) {

      $res = mysql_query("select * from $val");

      // 没有数据的表不执行insert
      while ($row = mysql_fetch_row($res)) {

        $sqlStr = "INSERT INTO `".$val."` VALUES (";

        foreach($row as $v){

          $sqlStr .= "'$v',";

        }
        //去掉最后一个逗号
        $sqlStr = substr($sqlStr, 0, strlen($sqlStr) - 1);
        $sqlStr .= ");\r\n";

        file_put_contents($fileName, $sqlStr, FILE_APPEND);
      }
      mysql_free_result($res);
    }

    echo '数据备份成功!';
  }
 // 调用此方法 
  backupMySqlData('localhost', 'root', '123456', 'YouDbName');  
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
我的论坛源代码(九)
Oct 09 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
浅析is_writable的php实现
Jun 18 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
PHP无限分类(树形类)
Sep 28 PHP
phpphp图片采集后按原路径保存图片示例
Feb 18 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
php正则表达式使用方法整理集合
Jan 31 PHP
PHP 使用位运算实现四则运算的代码
Mar 09 PHP
PHP中多字节字符串操作实例详解
Aug 23 PHP
PHP用反撇号执行外部命令
Apr 14 #PHP
PHP使用mysqldump命令导出数据库
Apr 14 #PHP
php遍历CSV类实例
Apr 14 #PHP
php获取twitter最新消息的方法
Apr 14 #PHP
php检测url是否存在的方法
Apr 14 #PHP
PHP中把对象转换为关联数组代码分享
Apr 09 #PHP
Laravel 5 框架入门(四)完结篇
Apr 09 #PHP
You might like
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
js+html制作简单验证码
2017/02/16 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
Python 实现进度条的六种方式
2021/01/06 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
JSF如何进行表格处理及取值
2012/08/06 面试题
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
小学教研工作制度
2014/01/15 职场文书
大学校运会广播稿
2014/02/03 职场文书
《尊严》教学反思
2014/02/11 职场文书
寒假家长评语大全
2014/04/16 职场文书
售后客服工作职责
2014/06/16 职场文书
天猫活动策划方案
2014/08/21 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
补充协议书
2015/01/28 职场文书
身份证丢失证明
2015/06/19 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python
alibaba seata服务端具体实现
2022/02/24 Java/Android
vue中div禁止点击事件的实现
2022/04/02 Vue.js