zoukankan      html  css  js  c++  java
  • 备份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天以前的备份";

    ?>
  • 相关阅读:
    剑指offer03-04
    五大算法-1.回溯法
    linux与操作系统(1)- 用户接口
    python中的装饰器
    mysql 创建数据库,用户并给用户设置权限
    centOS6.5 桌面状态栏消失 解决
    centOS linux 远程Mysql 记录之root用户密码丢失
    XStream.toXML() 简单两种使用实例
    FileInputStream和FileOutStream 简单的使用实例;
    orale 行转列或者 字符拼接函数 wmsys.wm_concat()函数 /instr(listagg(name,';') within group (order by o.srclinkedid)
  • 原文地址:https://www.cnblogs.com/Task/p/1746175.html
Copyright © 2011-2022 走看看