备份mysql数据库的php代码(一个表一个文件)


Posted in PHP onMay 28, 2010
<?php 
$cfg_dbhost ='localhost';//mysql主机 
$cfg_dbname ='sq_test';//数据库名 
$cfg_dbuser ='root';//数据库用户名 
$cfg_dbpwd ='3water.com';//数据库用户密码 
$cfg_db_language ='utf8';//数据库编码 class dbmysql{ 
public static $dbhost = 'localhost'; 
public static $dbname; 
public static $dbuser = 'root'; 
public static $dbpass; 
public static $charset = 'utf8'; 
public static $DB = null; 
public $querycount = 0; 
public function __construct() 
{ 
self::$dbhost = $GLOBALS['cfg_dbhost']; 
self::$dbname = $GLOBALS['cfg_dbname']; 
self::$dbuser = $GLOBALS['cfg_dbuser']; 
self::$dbpass = $GLOBALS['cfg_dbpwd']; 
self::$charset= $GLOBALS['cfg_db_language']; 
self::connect(); 
} 
public function connect(){ 
self::$DB=mysql_connect(self::$dbhost,self::$dbuser,self::$dbpass); 
if(!self::$DB){ 
self::sqlError('无法连接服务器!'.self::mysqlerror);exit("无法连接服务器!");; 
} 
if(!mysql_select_db(self::$dbname)){ 
self::sqlError('无法连接数据库('.self::$dbname.')!'.self::mysqlerror);exit("无法连接数据库!"); 
} 
mysql_query("SET NAMES '".self::$charset."', character_set_client=binary, sql_mode='';",self::$DB); 
} 
private function mysqlerror(){ 
return mysql_error(); 
} 
public function getTablesName(){ 
$res = mysql_query('SHOW TABLES FROM '.self::$dbname,self::$DB); 
$tables=array(); 
while ($row=mysql_fetch_row($res))$tables[]=$row[0]; 
mysql_free_result($res); 
return $tables; 
} 
public function getFields($table){ 
$res=mysql_query('DESCRIBE '.$table,self::$DB); 
$tables=array(); 
while($row=mysql_fetch_row($res))$tables[]=$row[0]; 
mysql_free_result($res); 
return $tables; 
} 
public function fetch_array($sql){ 
$res=mysql_query($sql,self::$DB); 
$r=mysql_fetch_array($res); 
mysql_free_result($res); 
return $r; 
} 
public function fetch_assoc($sql){ 
$q3=mysql_query($sql,self::$DB); $ra=array(); 
while($data=mysql_fetch_assoc($q3)){ 
$ra[]=$data; 
} 
mysql_free_result($q3); 
return $ra; 
} 
private function sqlError($message='',$info ='',$sql=''){//保存错误信息到文件 
echo "{".$message."<br/>DATE: ".date('Y-n-j H:i:s')."<br/>ERROR: ".$info."<br/>SQL: ".$sql."<br/>}<br/>"; 
} 
public function close(){ 
self::$DB =null; 
} 
public function __destruct() 
{ 
self::close(); 
} 
} 
/*---class end*/ 
function makedir($dirpath){ 
if(!$dirpath) return 0; 
$dirpath=str_replace("\\","/",$dirpath); $mdir=""; 
foreach(explode("/",$dirpath) as $val){ 
$mdir.=$val."/"; 
if($val==".."||$val==".")continue; 
if(!is_dir($mdir)&&!file_exists($mdir)){ 
if(!@mkdir($mdir,0755)){ 
exit("创建目录 [".$mdir."]失败."); 
} 
} 
} 
return true; 
} 
function delDirAndFile($dirName){ 
if($handle=opendir($dirName)){ 
while(false!==($item = readdir($handle))){ 
if($item !="."&&$item!=".."){ 
if(is_dir( "$dirName/$item")){ 
delDirAndFile( "$dirName/$item"); 
}else{ unlink("$dirName/$item"); } 
} 
} 
closedir( $handle ); 
if( rmdir( $dirName ) )echo "成功删除目录: $dirName<br/>\n"; 
} 
} 
function filein($filename="databak/",$table='',$mysql=''){ 
$fp = fopen($filename.'/'.$table.'.sql','w'); 
fputs($fp,$mysql); 
fclose($fp); 
} 
header("Content-Type:text/html;charset=utf-8"); 
$db=new dbmysql(); 
$table=$db->getTablesName(); 
$filename="databak/".date("Ymd"); 
$url=getcwd()."/databak/"; 
$handle = opendir($url); 
while(false!==($file = readdir($handle))){ 
if ($file!="."&&$file!=".."&&is_dir($url."/".$file)) { 
if(date("Ymd")-$file>5){delDirAndFile($url."/".$file);}; 
} 
} 
makedir($filename); 
foreach($table as $t){ 
$s1=$db->fetch_array("show create table `$t`"); 
$mysql="/*Time:".date("Y-m-d H:i:s")." */\r\nDROP TABLE IF EXISTS `$t`;\r\n".$s1['Create Table'].";\r\n\r\n"; 
$a1=$db->fetch_assoc("select * from `$t`"); 
foreach ($a1 as $data){ 
$vals=array_values($data); 
$vals=array_map('addslashes',$vals); 
$vals=join("','",$vals); 
$vals="'".$vals."'"; 
$mysql.="INSERT INTO `$t` VALUES ($vals);\r\n"; 
} 
$mysql.="\r\n"; 
filein($filename,$t,$mysql); 
} 
echo "数据备份成功,生成备份文件 
".getcwd()."/".$filename."/<br/>程序自动清理5天以前的备份"; 
?>
PHP 相关文章推荐
php学习之流程控制实现代码
Jun 09 PHP
php设计模式之观察者模式的应用详解
May 21 PHP
PHP反射使用实例和PHP反射API的中文说明
Jul 02 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
Jul 08 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
php建立Ftp连接的方法
Mar 07 PHP
PHP简单实现无限级分类的方法
May 13 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
PHP输出Excel PHPExcel的方法
Jul 26 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
Jul 18 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
May 27 #PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 #PHP
PHP 可阅读随机字符串代码
May 26 #PHP
PHP 一个随机字符串生成代码
May 26 #PHP
PHP 循环列出目录内容的函数代码
May 26 #PHP
PHP 删除一个目录及目录下的所有文件的函数代码
May 26 #PHP
PHP JSON 数据解析代码
May 26 #PHP
You might like
PHP 已经成熟
2006/12/04 PHP
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
php中的观察者模式简单实例
2015/01/20 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
Python之list对应元素求和的方法
2018/06/28 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
电子商务专员岗位职责
2013/12/11 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
交通违章检讨书
2014/09/21 职场文书
2015年双拥工作总结
2015/04/08 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
深入理解go slice结构
2021/09/15 Golang