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环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
Nov 17 PHP
PHP 地址栏信息的获取代码
Jan 07 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
PHP 命名空间实例说明
Jan 27 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
php数据类型判断函数有哪些
Sep 23 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
php中smarty区域循环的方法
Jun 11 PHP
PHP中的session安全吗?
Jan 22 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
德生PL330测评
2021/03/02 无线电
用PHP制作静态网站的模板框架
2006/10/09 PHP
PHP中的正规表达式(二)
2006/10/09 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
mouse_on_title.js
2006/08/25 Javascript
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
一些mootools的学习资源
2010/02/07 Javascript
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
python实现按任意键继续执行程序
2016/12/30 Python
Python3 集合set入门基础
2020/02/10 Python
Python容器类型公共方法总结
2020/08/19 Python
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
人力资源部经理岗位职责规定
2014/02/23 职场文书
素质教育标语
2014/06/27 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
行政二审代理词
2015/05/25 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python