使用方法:

require_once("backdata.class.php");
$link =@mysql_connect("localhost","数据库名","密码")ordie('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;//表名publicfunction __construct($mysql_link){
$this->mysql_link = $mysql_link;}publicfunction 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);}privatefunction 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;}}?>


文章摘自:PHP - Mysql数据库备份类

PHP - Mysql数据库备份类的更多相关文章

  1. Java实现mysql数据库备份

    Runtime是一个与JVM运行时环境有关的类,这个类是Singleton的. Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法. ...

  2. JSP 实现 之 调用java方法实现MySQL数据库备份和恢复

    package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOEx ...

  3. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  4. TODO:MongoDB MySQL数据库备份

    TODO:MongoDB MySQL数据库备份 1. MongoDB使用命令备份 mongodump进行整个数据库备份,主要用到的命令参数: -d 要备份的数据库 -o 输出的路径 ./mongodu ...

  5. Java实现MySQL数据库备份(二)

    权声明:本文为博主原创文章,未经博主允许不得转载. 博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这种方法比较繁杂,下面介绍另一种备份MyS ...

  6. Java实现MySQL数据库备份(一)

    下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import jav ...

  7. MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

    MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...

  8. MySQL数据库备份命令

    原文参考:MySQL数据库备份的命令 - 司南 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql备 ...

  9. php : mysql数据库操作类演示

    设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...

随机推荐

  1. UESTC_秋实大哥打游戏 2015 UESTC Training for Data Structures<Problem H>

    H - 秋实大哥打游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Subm ...

  2. Ajax下载文件(页面无刷新)

    说明:Ajax是无法实现文件传输的,本文只是模拟了Ajax不刷新页面就可以请求并返回数据的效果.实质上还是通过提交form表单来返回文件流的输出. 分步实现逻辑: ajax请求服务器,访问数据库,根据 ...

  3. HDOJ 题目分类

    HDOJ 题目分类 /* * 一:简单题 */ 1000:    入门用:1001:    用高斯求和公式要防溢出1004:1012:1013:    对9取余好了1017:1021:1027:   ...

  4. js面向对象编程:if中能够使用那些作为推断条件呢?

       在全部编程语言中if是最长用的推断之中的一个.但在js中究竟哪些东西能够在if中式作为推断表达式呢? 比如怎样几行,仅仅是少了一个括号.真假就全然不同.究竟表示什么含义呢 var obj={}; ...

  5. 技术之美[程序人生]我在IBM实习的日子

    写这篇文章的时候,我已经在IBM正式工作了,看看上一篇博文的发布日期,才发现,我已经将近三个月没有更新博客了,多么惊人!为什么这么久?期间发生了很多事情.最重要的一件就是我大学毕业了!毕业的那么平淡, ...

  6. notepad++和gcc搭建语言环境

    1,工具: Notepad++:http://pan.baidu.com/s/1sjlXl6X MinGW:http://pan.baidu.com/s/1qWyQ3lq 2,安装notepad++ ...

  7. log4j2j配置

    maven依赖 <properties> <sl4j.version>1.7.7</sl4j.version> <log4j2.version>2.1& ...

  8. Android 关于屏幕适配

    android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 转自:http://www.c ...

  9. Oracle sql语言模糊查询--like后面的通配符

    关于like后面的条件,Oracle提供了四种匹配模式: 1,% :表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FR ...

  10. GDAL显示线性shp文件

    http://pan.baidu.com/s/1qWIDphU  (工程文件在vs2008中编写) 1.使用到的技术 GDAL:读取矢量数据 GDI:    绘制矢量数据 2.详细解释 GDI绘图: ...