备份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 相关文章推荐
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
中篇:安装及配置PHP
Dec 13 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
php计算十二星座的函数代码
Aug 21 PHP
PHP可逆加密/解密函数分享
Sep 25 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
PHP Yaf框架的简单安装使用教程(推荐)
Jun 08 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
Aug 17 PHP
Laravel框架实现即点即改功能的方法分析
Oct 31 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 如何获取数组第一个值
2013/08/06 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
python实现基本进制转换的方法
2015/07/11 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
Python2与Python3的区别实例分析
2019/04/11 Python
python实现远程控制电脑
2019/05/23 Python
python多线程并发实例及其优化
2019/06/27 Python
详解python中的异常捕获
2020/12/15 Python
利用python绘制正态分布曲线
2021/01/04 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
StringBuilder和String的区别
2015/05/18 面试题
降消项目实施方案
2014/03/30 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
500字作文之周记
2019/12/13 职场文书
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers