php Mysql数据库备份类及调用方法_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1734 | 回复: 0   主题: php Mysql数据库备份类及调用方法        下一篇 
kyle
注册用户
等级:新兵
经验:31
发帖:58
精华:0
注册:2011-12-6
状态:离线
发送短消息息给kyle 加好友    发送短消息息给kyle 发消息
发表于: IP:您无权察看 2014-12-18 9:55:43 | [全部帖] [楼主帖] 楼主

分享一个mysql数据库备份类,并附有详细的调用方法,有需要的朋友参考下。

一个php mysql数据库备份类,分享给大家。

1,mysql数据库备份类 backdata.class.php:

01 <?php
02 /*
03    *
04    * @ Mysql备份数据类
05    * @by www.jbxue.com
06    */
07 class backupData{
      08 private $mysql_link;//链接标识
      09 private $dbName; //数据库名
      10 private $dataDir; //数据所要存放的目录
      11 private $tableNames;//表名
      12
      13 public function __construct($mysql_link){
            14 $this->mysql_link = $mysql_link;
      15 }
      16 public function backupTables($dbName,$dataDir,$tableNames){//开始备份
            17 $this->dbName = $dbName;
            18 $this->dataDir = $dataDir;
            19 $this->tableNames = $tableNames;
            20 $tables=$this->delarray($this->tableNames);
            21 $sqls='';
            22 foreach($tables as $tablename){
                  23 if($tablename==''){//表不存在时
                        24 continue;
                  25 }
                  26
                  27 //************************以下是形成SQL的前半部分**************
                  28 //如果存在表,就先删除
                  29 $sqls .= "DROP TABLE IF EXISTS $tablename;\n";
                  30 //读取表结构
                  31 $rs = mysql_query("SHOW CREATE TABLE $tablename",$this->mysql_link);
                  32 $row=mysql_fetch_row($rs);
                  33 //获得表结构组成SQL
                  34 $sqls.=$row['1'].";\n\n";
                  35 unset($rs);
                  36 unset($row);
                  37
                  38 //************************以下是形成SQL的后半部分**************
                  39 //查寻出表中的所有数据
                  40 $rs=mysql_query("select * from $tablename",$this->mysql_link);
                  41 //表的字段个数
                  42 $field=mysql_num_fields($rs);
                  43 //形成此种SQL语句:"INSERT INTO `groups` VALUES('1499e0ca25988d','主任','','0');"
                  44 while($rows=mysql_fetch_row($rs)){
                        45 $comma='';//逗号
                        46 $sqls.="INSERT INTO `$tablename` VALUES(";
                        47 for($i=0;$i<$field;$i++){
                              48 $sqls.=$comma."'".$rows[$i]."'";
                              49 $comma=',';
                        50 }
                        51 $sqls.=");\n\n\n";
                  52 }
            53 }
            54 $backfilepath=$this->dataDir.date("Ymdhis",time()).'.sql';
            55
            56 //写入文件
            57 $filehandle = fopen($backfilepath, "w");
            58 fwrite($filehandle, $sqls);
            59 fclose($filehandle);
      60 }
      61 private function delarray($array){ //处理传入进来的数组
            62 foreach($array as $tables){
                  63 if($tables=='*'){ //所有的表(获得表名时不能按常规方式来组成一个数组)
                        64 $newtables=mysql_list_tables($this->dbName,$this->mysql_link);
                        65 $tableList = array();
                        66 for ($i = 0; $i < mysql_numrows($newtables); $i++){
                              67 array_push($tableList,mysql_tablename($newtables, $i));
                        68 }
                        69 $tableList=$tableList;
                  70 }else{
                  71 $tableList=$array;
                  72 break;
            73 }
      74 }
      75 return $tableList;
76 }
77 }
78 ?>


2,调用方法:

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为:要存放备份数据的位置(即目录地址)
第三个为:你要保存那些表

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论