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 相关文章推荐
一个数据采集类
Feb 14 PHP
彻底杜绝PHP的session cookie错误
Aug 09 PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
php页面缓存方法小结
Jan 10 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
smarty模板数学运算示例
Dec 11 PHP
Thinkphp框架中D方法与M方法的区别
Dec 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实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
PHP实现的策略模式示例
2019/03/20 PHP
js一组验证函数
2008/12/20 Javascript
javascript 流畅动画实现原理
2009/09/08 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
JS中的三个循环小结
2017/06/20 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python学习资料
2007/02/08 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
python监控文件并且发送告警邮件
2018/06/21 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
单位办理社保介绍信
2014/01/10 职场文书
怎么写好自荐书
2014/03/02 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
幼儿园新年寄语
2014/04/03 职场文书
出国留学担保书
2014/05/20 职场文书
五年级上册复习计划
2015/01/19 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书