[转帖]备份mysql数据库的php代码_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1883 | 回复: 0   主题: [转帖]备份mysql数据库的php代码        下一篇 
dwx8023
注册用户
等级:上尉
经验:612
发帖:114
精华:0
注册:2011-11-8
状态:离线
发送短消息息给dwx8023 加好友    发送短消息息给dwx8023 发消息
发表于: IP:您无权察看 2014-11-5 14:21:18 | [全部帖] [楼主帖] 楼主

代码如下:

 <?php

$cfg_dbhost ='localhost';//mysql主机

$cfg_dbname ='sq_test';//数据库名

$cfg_dbuser ='root';//数据库用户名

$cfg_dbpwd ='phphtm.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天以前的备份";

?>

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论