备份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 中文字符串首字母的获取函数分享
Nov 04 PHP
laravel安装和配置教程
Oct 29 PHP
Thinkphp多文件上传实现方法
Oct 31 PHP
php数组使用规则分析
Feb 27 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
使用新浪微博API的OAuth认证发布微博实例
Mar 27 PHP
php实现在服务器端调整图片大小的方法
Jun 16 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
PHP实现的文件上传类与用法详解
Jul 05 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP执行linux命令6个函数代码实例
Nov 24 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,不用COM,生成excel文件
2006/10/09 PHP
xajax写的留言本
2006/11/25 PHP
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
Laravel5中contracts详解
2015/03/02 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
机关单位动员会主持词
2014/03/20 职场文书
法人委托书范本
2014/04/04 职场文书
欢迎家长标语
2014/10/08 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
服务员岗位职责
2015/02/03 职场文书
亮剑观后感600字
2015/06/05 职场文书
导游词之神仙居景区
2019/11/15 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
mysql的数据压缩性能对比详情
2021/11/07 MySQL
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技