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的ob_start() 控制您的浏览器cache
Aug 03 PHP
php 静态页面中显示动态内容
Aug 14 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
PHP实现搜索相似图片
Sep 22 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
实例讲解php实现多线程
Jan 27 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 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
长波知识介绍
2021/03/01 无线电
PHP获取文件行数的方法
2015/06/10 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
python实现随机密码字典生成器示例
2014/04/09 Python
Python基于select实现的socket服务器
2016/04/13 Python
Python正则表达式使用经典实例
2016/06/21 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
tensorflow的计算图总结
2020/01/12 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
Puma印度官网:德国运动品牌
2019/10/06 全球购物
内科护士实习自我鉴定
2013/10/17 职场文书
护理学中专毕业生求职信
2013/11/11 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
德劲DE1102数字调谐收音机机评
2022/04/07 无线电