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 相关文章推荐
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
smarty获得当前url的方法分享
Feb 14 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
Apr 01 PHP
php使用百度天气接口示例
Apr 22 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
搭建自己的PHP MVC框架详解
Aug 16 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
ThinkPHP5.1验证码功能实现的示例代码
Jun 08 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
Home Coffee Roasting
2021/03/03 咖啡文化
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
PHP时间类完整代码实例
2021/02/26 PHP
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
python中cPickle用法例子分享
2014/01/03 Python
总结Python编程中函数的使用要点
2016/03/20 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
Sanic框架路由用法实例分析
2018/07/16 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
Python3 读取Word文件方式
2020/02/13 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
如何理解委托
2012/01/06 面试题
什么时候需要进行强制类型转换
2016/09/03 面试题
表扬信格式
2014/01/12 职场文书
公开服务承诺制度
2014/03/26 职场文书
生物科学专业自荐书
2014/06/20 职场文书
2014年工人工作总结
2014/11/25 职场文书
小学优秀教师材料
2014/12/15 职场文书
档案工作个人总结
2015/03/03 职场文书
投诉书格式范本
2015/07/02 职场文书