用php實現(xiàn)的備份MySQL數(shù)據(jù)庫的代碼,需要的朋友可以參考下。
	<?php
	$cfg_dbhost ='localhost';//mysql主機(jī)
	$cfg_dbname ='sq_test';//數(shù)據(jù)庫名
	$cfg_dbuser ='root';//數(shù)據(jù)庫用戶名
	$cfg_dbpwd ='vevb.com';//數(shù)據(jù)庫用戶密碼
	$cfg_db_language ='utf8';//數(shù)據(jù)庫編碼
	
	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('無法連接服務(wù)器!'.self::mysqlerror);exit("無法連接服務(wù)器!");;
	}
	if(!mysql_select_db(self::$dbname)){
	self::sqlError('無法連接數(shù)據(jù)庫('.self::$dbname.')!'.self::mysqlerror);exit("無法連接數(shù)據(jù)庫!");
	}
	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("創(chuàng)建目錄 [".$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 "數(shù)據(jù)備份成功,生成備份文件   ".getcwd()."/".$filename."/<br/>程序自動清理5天以前的備份";
	?>
新聞熱點
疑難解答
圖片精選