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概述.
Oct 09 PHP
php入门教程 精简版
Dec 13 PHP
PHP 编程安全性小结
Jan 08 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
PHP使用xmllint命令处理xml与html的方法
Dec 15 PHP
php数组键值用法实例分析
Feb 27 PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP中的访问修饰符简单比较
Feb 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 pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
解析PHP工厂模式的好处
2013/06/18 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP常用处理静态操作类
2015/04/03 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
PDO::getAttribute讲解
2019/01/28 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
Vue中全局变量的定义和使用
2019/06/05 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
python进程类subprocess的一些操作方法例子
2014/11/22 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
python实现桌面壁纸切换功能
2019/01/21 Python
python函数的作用域及关键字详解
2019/08/20 Python
python 5个实用的技巧
2020/09/27 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
英语专业职业生涯规划范文
2014/03/05 职场文书
办公用房租赁协议书
2014/11/29 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL