php备份mysql表_备份mysql数据库的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."
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天以前的备份";

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值