• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • PHP - Mysql数据库备份类

    网络   2013/9/24 11:14:40

    使用方法:

    require_once("backdata.class.php");
    $link = @mysql_connect("localhost","数据库名","密码") or die ('Could not connect to server.');
    mysql_query("use cms",$link);
    mysql_query("set names utf8",$link);
    $dbbck=new backupData($link);//实例化它,只要一个链接标识就行了
    //备份数据时,如想备份一个数据库中的所有表,你可这样写:
    $dbbck->backupTables("cms","./",array('*'));
    //备份数据时,如想备份一个数据库中的仅一个表时,你可这样写:
    $dbbck->backupTables("cms","./",array('user'));
    //备份数据时,如想备份一个数据库中的多个表时,你可这样写:
    $dbbck->backupTables("cms","./",array('user','acl','informatoin'));
    //注解:$dbbck->backupTables("参1","参2",array());中,
    参1为:数据库名,
    参2为:要存放备份数据的位置(即目录地址)
    第三个为:你要保存那些表

    backdata.class.php:

    <?php
    /*
    *
    *简单的一个Mysql备份数据类
    *
    */
    class backupData{
       private    $mysql_link;//链接标识
       private    $dbName;    //数据库名
       private    $dataDir;     //数据所要存放的目录
       private    $tableNames;//表名

       public function __construct($mysql_link){
            $this->mysql_link = $mysql_link;
       }
       public function backupTables($dbName,$dataDir,$tableNames){//开始备份
           $this->dbName  = $dbName;
           $this->dataDir  = $dataDir;
           $this->tableNames = $tableNames;
           $tables=$this->delarray($this->tableNames);
           $sqls='';
           foreach($tables as $tablename){
               if($tablename==''){//表不存在时
                   continue;
               }

               //************************以下是形成SQL的前半部分**************
               //如果存在表,就先删除
               $sqls .= "DROP TABLE IF EXISTS $tablename;\n";
               //读取表结构
               $rs = mysql_query("SHOW CREATE TABLE $tablename",$this->mysql_link);  
               $row=mysql_fetch_row($rs);
               //获得表结构组成SQL
               $sqls.=$row['1'].";\n\n";
               unset($rs);
               unset($row);

               //************************以下是形成SQL的后半部分**************
               //查寻出表中的所有数据
               $rs=mysql_query("select * from $tablename",$this->mysql_link);
               //表的字段个数
               $field=mysql_num_fields($rs);
               //形成此种SQL语句:"INSERT INTO `groups` VALUES('1499e0ca25988d','主任','','0');"
               while($rows=mysql_fetch_row($rs)){
                   $comma='';//逗号
                   $sqls.="INSERT INTO `$tablename` VALUES(";
                   for($i=0;$i<$field;$i++){
                       $sqls.=$comma."'".$rows[$i]."'";
                       $comma=',';
                   }
                   $sqls.=");\n\n\n";
               }
           }
           $backfilepath=$this->dataDir.date("Ymdhis",time()).'.sql';

           //写入文件
           $filehandle = fopen($backfilepath, "w");
           fwrite($filehandle, $sqls);
           fclose($filehandle);
       }
       private function delarray($array){    //处理传入进来的数组
           foreach($array as $tables){
               if($tables=='*'){    //所有的表(获得表名时不能按常规方式来组成一个数组)
                   $newtables=mysql_list_tables($this->dbName,$this->mysql_link);
                   $tableList = array();
                   for ($i = 0; $i < mysql_numrows($newtables); $i++){
                       array_push($tableList,mysql_tablename($newtables, $i));
                   }
                   $tableList=$tableList;
               }else{
                   $tableList=$array;
                   break;
               }
           }
           return $tableList;
       }
    }

    ?>


    阅读(953) 分享(0)

    上一篇: PHP - 读取操作IP地址数据库文件QQWry.dat
    下一篇: PHP - 利用Curl、socket、file_get_contents POST数据

  • 精彩推荐

    ◆ MySQL配置优化
    ◆ WINDOWS 2003 IIS6 支持SHA256。基础连接已经关闭 发送时发生错误修复
    ◆ sql2000增加序号列,自动增加列,ROW_NUMBER()
    ◆ SQL set statistics命令
    ◆ Google Analytics与百度统计的原理
    ◆ OutputCache 缓存 VaryByCustom的使用,增加缓存后手机端无法做判断的处理
    ◆ SQLSERVER数据库检查DBCC CheckDB
    ◆ 为什么mysql使用SELECT*比SELECT字段 查询速度还快
    ◆ 谷歌镜像网站大全 google翻墙地址大全
    ◆ 携程全线瘫痪,传言代码被恶意删除
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。