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代码
Dec 06 PHP
初学CAKEPHP 基础教程
Nov 02 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
PHP中的类型约束介绍
May 11 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
9个比较实用的php代码片段
Mar 15 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
php 根据自增id创建唯一编号类
Apr 06 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
PHP之header函数详解
Mar 02 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获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
简略的前端架构心得&amp;&amp;基于editor为例子的编码小技巧
2010/11/25 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
js select option对象小结
2013/12/20 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
JavaScript模拟push
2016/03/06 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
python实现随机加减法生成器
2020/02/24 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
考博自荐信
2013/10/25 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
代理词怎么写
2015/05/25 职场文书