备份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下用cookie统计用户访问网页次数的代码
May 09 PHP
php自动获取字符串编码函数mb_detect_encoding
May 31 PHP
php获取汉字首字母的函数
Nov 07 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
php+mysql数据库查询实例
Jan 21 PHP
PHP的几个常用加密函数
Feb 03 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
php实现对短信验证码发送次数的限制实例讲解
Mar 04 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 session处理的定制
2009/03/16 PHP
php中用foreach来操作数组的代码
2011/07/17 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
javascript 数组的方法集合
2008/06/05 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python给你的头像加上圣诞帽
2018/01/04 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
用C语言实现文件读写操作
2013/10/27 面试题
求职者应聘的自我评价
2013/10/16 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书