备份mysql数据库的php代码(一个表一个文件)
author:一佰互联 2019-04-30   click:151
复制代码 代码如下:
<?php
$cfg_dbhost ="localhost";//mysql主机
$cfg_dbname ="sq_test";//数据库名
$cfg_dbuser ="root";//数据库用户名
$cfg_dbpwd ="jb51.net";//数据库用户密码
$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/> ";
}
}

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")." */ DROP TABLE IF EXISTS `$t`; ".$s1["Create Table"]."; ";
$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); ";
}
$mysql.=" ";
filein($filename,$t,$mysql);
}

echo "数据备份成功,生成备份文件   ".getcwd()."/".$filename."/<br/>程序自动清理5天以前的备份";
?>