• 备份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."<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(!$dirpathreturn 0;
        
    $dirpath=str_replace("\\","/",$dirpath);    $mdir="";
        
    foreach(explode("/",$dirpathas $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 );
       
    ifrmdir$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天以前的备份";

    ?>
  • 相关阅读:
    OpenShift
    ant exec
    深入了解Ant构建工具 命令
    防止sql注入和跨站脚本攻击,跨站请求伪造以及一句话木马的学习记录
    Web攻防之XSS,CSRF,SQL注入(转)
    sublime text常用快捷键(转)
    fiddler使用心得记录
    python+tesseract验证码识别的一点小心得
    window脚本命令学习(转)
    python发送邮件(转)
  • 原文地址:https://www.cnblogs.com/Task/p/1746175.html
Copyright © 2020-2023  润新知