php MYSQL 数据备份类


Posted in PHP onJune 19, 2009

功能上有: ­
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为:要存放备份数据的位置(即目录地址)
第三个为:你要保存那些表
ok...
­
以下为代码:

<?php 
/* 
* 
*简单的一个备份数据类 
*author FC 
* 
*/ 
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; 
} 
}
PHP 相关文章推荐
PHP.MVC的模板标签系统(五)
Sep 05 PHP
php中常用编辑器推荐
Jan 02 PHP
来自phpguru得Php Cache类源码
Apr 15 PHP
ajax 的post方法实例(带循环)
Jul 04 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 PHP
PHP 程序员也要学会使用“异常”
Jun 16 #PHP
phpmyadmin 访问被拒绝的真实原因
Jun 15 #PHP
两个强悍的php 图像处理类1
Jun 15 #PHP
PHP写MySQL数据 实现代码
Jun 15 #PHP
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 #PHP
纯真IP数据库的应用 IP地址转化成十进制
Jun 14 #PHP
PHP 定界符 使用技巧
Jun 14 #PHP
You might like
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
学习php开源项目的源码指南
2014/12/21 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
Cookie 小记
2010/04/01 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
Python字典的核心底层原理讲解
2019/01/24 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
Django 开发环境配置过程详解
2019/07/18 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
大学生入党思想汇报
2014/01/01 职场文书
十佳党员事迹材料
2014/08/28 职场文书
高考学习决心书
2015/02/04 职场文书
求职导师推荐信范文
2015/03/27 职场文书
介绍信范文大全
2015/05/07 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
我的收音机情缘
2022/04/05 无线电