備份mysql數(shù)據(jù)庫(kù)的php代碼(一個(gè)表一個(gè)文件)
更新時(shí)間:2010年05月28日 19:33:45 作者:
用php實(shí)現(xiàn)的備份MySQL數(shù)據(jù)庫(kù)的代碼,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:
<?php
$cfg_dbhost ='localhost';//mysql主機(jī)
$cfg_dbname ='sq_test';//數(shù)據(jù)庫(kù)名
$cfg_dbuser ='root';//數(shù)據(jù)庫(kù)用戶(hù)名
$cfg_dbpwd ='jb51.net';//數(shù)據(jù)庫(kù)用戶(hù)密碼
$cfg_db_language ='utf8';//數(shù)據(jù)庫(kù)編碼
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ú)法連接服務(wù)器!'.self::mysqlerror);exit("無(wú)法連接服務(wù)器!");;
}
if(!mysql_select_db(self::$dbname)){
self::sqlError('無(wú)法連接數(shù)據(jù)庫(kù)('.self::$dbname.')!'.self::mysqlerror);exit("無(wú)法連接數(shù)據(jù)庫(kù)!");
}
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=''){//保存錯(cuò)誤信息到文件
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/>程序自動(dòng)清理5天以前的備份";
?>
相關(guān)文章
一個(gè)基于PDO的數(shù)據(jù)庫(kù)操作類(lèi)(新) 一個(gè)PDO事務(wù)實(shí)例
原先已經(jīng)寫(xiě)過(guò)一個(gè)PDO的數(shù)據(jù)庫(kù)操作類(lèi),這次只是在原先基礎(chǔ)上進(jìn)行修改。2011-07-07php代碼運(yùn)行時(shí)間查看類(lèi)代碼分享
php代碼運(yùn)行時(shí)間查看類(lèi)代碼,主要是用來(lái)查看php代碼的運(yùn)行時(shí)間。2011-08-08php使用cookie保存用戶(hù)登錄的用戶(hù)名實(shí)例
這篇文章主要介紹了php使用cookie保存用戶(hù)登錄的用戶(hù)名實(shí)現(xiàn)方法,實(shí)例形式完整分析了cookie保存用戶(hù)登錄名的技巧,需要的朋友可以參考下2015-01-01php初始化對(duì)象和析構(gòu)函數(shù)的簡(jiǎn)單實(shí)例
本篇文章主要是對(duì)php初始化對(duì)象和析構(gòu)函數(shù)的簡(jiǎn)單實(shí)例進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03PHP JSAPI調(diào)支付API實(shí)現(xiàn)微信支付功能詳解
本人最近做了微信支付開(kāi)發(fā),是第一次接觸,其中走了很多彎路,遇到的問(wèn)題也很多。為了讓和我一樣的新人不再遇到類(lèi)似的問(wèn)題,我把我的開(kāi)發(fā)步驟和問(wèn)題寫(xiě)出來(lái)以供參考,這篇文章主要介紹了PHP JSAPI調(diào)支付API實(shí)現(xiàn)微信支付功能2022-11-11php去掉字符串的最后一個(gè)字符附substr()的用法
今天項(xiàng)目中用到,去掉字符串中的最后一個(gè)字符,所以使用了substr,特整理了下,方便需要的朋友學(xué)習(xí)下。2011-03-03