Heim > php教程 > php手册 > Hauptteil

备份mysql数据库的php代码(一个表一个文件)

WBOY
Freigeben: 2016-06-06 20:34:12
Original
1423 Leute haben es durchsucht

用php实现的备份MySQL数据库的代码,需要的朋友可以参考下。

代码如下:
$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."
DATE: ".date('Y-n-j H:i:s')."
ERROR: ".$info."
SQL: ".$sql."
}
";
}
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
\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."/
程序自动清理5天以前的备份";
?>
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage