备份mysql(一表一文件)

php

$cfg_dbhost            ='localhost';//mysql主机
$cfg_dbname            ='sq_test';//数据库名
$cfg_dbuser            ='root';//数据库用户名
$cfg_dbpwd            ='123450';//数据库用户密码
$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 . "
DATE: 
" . date ( ' Y-n-j H:i:s ' ) . "
ERROR: 
" . $info . "
SQL: 
" . $sql . "
}
" ;
    }
    
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
\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 . " /
程序自动清理5天以前的备份
" ;

?>

 

转载于:https://www.cnblogs.com/Task/archive/2010/05/28/1746175.html

你可能感兴趣的:(数据库,php)