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 变量类型的强制转换
Oct 23 PHP
获取远程文件大小的php函数
Jan 11 PHP
浅谈php自定义错误日志
Feb 13 PHP
分享一则PHP定义函数代码
Feb 26 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
joomla组件开发入门教程
May 04 PHP
php文件系统处理方法小结
May 23 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 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 获取百度的热词数据的代码
2012/02/18 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
老生常谈js数据类型
2017/08/03 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
python实现红包裂变算法
2016/02/16 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Django工程的分层结构详解
2019/07/18 Python
Python 寻找局部最高点的实现
2019/12/05 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
2014年团工作总结
2014/11/27 职场文书
同学会演讲稿
2019/04/02 职场文书
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers