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面向对象全攻略 (八)重载新的方法
Sep 30 PHP
PHP学习之数组值的操作
Apr 17 PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
PHP生成唯一订单号的方法汇总
Apr 16 PHP
php批量删除超链接的实现方法
Oct 19 PHP
php实现购物车功能(上)
Jul 23 PHP
Zend Framework教程之Zend_Layout布局助手详解
Mar 04 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
tp5框架内使用tp3.2分页的方法分析
May 05 PHP
Yii2框架中一些折磨人的坑
Dec 15 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调试函数和日志记录函数分享
2015/01/31 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
python3.6的venv模块使用详解
2018/08/01 Python
Python ATM功能实现代码实例
2020/03/19 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
音乐学个人的自荐书范文
2013/11/26 职场文书
大学班长的职责
2014/01/27 职场文书
租房协议书怎么写
2014/04/10 职场文书
新法人代表任命书
2014/06/06 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
canvas多重阴影发光效果实现
2021/04/20 Javascript
python实现A*寻路算法
2021/06/13 Python