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下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php array_map()数组函数使用说明
Jul 12 PHP
PHP对象Object的概念 介绍
Jun 14 PHP
PHP循环结构实例讲解
Feb 10 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
PHP调试及性能分析工具Xdebug详解
Feb 09 PHP
PHP自定义序列化接口Serializable用法分析
Dec 29 PHP
详解PHP版本兼容之openssl调用参数
Jul 25 PHP
Laravel中GraphQL接口请求频率实战记录
Sep 01 PHP
PHP autoload使用方法及步骤详解
Sep 05 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
一个分页的论坛
2006/10/09 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
wxPython中文教程入门实例
2014/06/09 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
2019/12/04 Python
基于python实现删除指定文件类型
2020/07/21 Python
python中温度单位转换的实例方法
2020/12/27 Python
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
.net工程师笔试题
2012/06/09 面试题
自动化专业毕业生自荐信
2013/11/01 职场文书
2014年组织部工作总结
2014/11/14 职场文书