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 相关文章推荐
PHP 和 MySQL 基础教程(二)
Oct 09 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
php自定义加密与解密程序实例
Dec 31 PHP
php去除html标记的原生函数详解
Jan 27 PHP
PHP获取当前相对于域名目录的方法
Jun 26 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
Oct 10 PHP
php日志函数error_log用法实例分析
Sep 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代码
2008/04/09 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
jQuery Tools tooltip使用说明
2012/07/14 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
JS实现星星海特效
2019/12/24 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
Python 通过pip安装Django详细介绍
2017/04/28 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
python画图常规设置方式
2020/03/05 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
CSS3 实现的加载动画
2020/12/07 HTML / CSS
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
法律工作求职自荐信
2013/10/31 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
施工安全保证书
2015/05/09 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
导游词之井冈山
2019/11/20 职场文书
Golang 并发编程 SingleFlight模式
2022/04/26 Golang
ant design vue的form表单取值方法
2022/06/01 Vue.js
Java Spring读取和存储详细操作
2022/08/05 Java/Android