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

复制代码代码如下:

$cfg_dbhost='localhost';//mysql主机

$cfg_dbname='sq_test';//数据库名

$cfg_dbuser='root';//数据库用户名

$cfg_dbpwd='jb51.net';//数据库用户密码

$cfg_db_language='utf8';//数据库编码

classdbmysql{

publicstatic$dbhost='localhost';

publicstatic$dbname;

publicstatic$dbuser='root';

publicstatic$dbpass;

publicstatic$charset='utf8';

publicstatic$DB=null;

public$querycount=0;

publicfunction__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();

}

publicfunctionconnect(){

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("SETNAMES'".self::$charset."',character_set_client=binary,sql_mode='';",self::$DB);

}

privatefunctionmysqlerror(){

returnmysql_error();

}

publicfunctiongetTablesName(){

$res=mysql_query('SHOWTABLESFROM'.self::$dbname,self::$DB);

$tables=array();

while($row=mysql_fetch_row($res))$tables[]=$row[0];

mysql_free_result($res);

return$tables;

}

publicfunctiongetFields($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;

}

publicfunctionfetch_array($sql){

$res=mysql_query($sql,self::$DB);

$r=mysql_fetch_array($res);

mysql_free_result($res);

return$r;

}

publicfunctionfetch_assoc($sql){

$q3=mysql_query($sql,self::$DB);$ra=array();

while($data=mysql_fetch_assoc($q3)){

$ra[]=$data;

}

mysql_free_result($q3);

return$ra;

}

privatefunctionsqlError($message='',$info='',$sql=''){//保存错误信息到文件

echo"{".$message."
DATE:".date('Y-n-jH:i:s')."
ERROR:".$info."
SQL:".$sql."
}
";

}

publicfunctionclose(){

self::$DB=null;

}

publicfunction__destruct()

{

self::close();

}

}

/*---classend*/

functionmakedir($dirpath){

if(!$dirpath)return0;

$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."]失败.");

}

}

}

returntrue;

}

functiondelDirAndFile($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";

}

}

functionfilein($filename="databak/",$table='',$mysql=''){

$fp=fopen($filename.'/'.$table.'.sql','w');

fputs($fp,$mysql);

fclose($fp);

}

header("Content-Type:text/html;charset=utf-8");

$db=newdbmysql();

$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($tableas$t){

$s1=$db->fetch_array("showcreatetable`$t`");

$mysql="/*Time:".date("Y-m-dH:i:s")."*/rnDROPTABLEIFEXISTS`$t`;rn".$s1['CreateTable'].";rnrn";

$a1=$db->fetch_assoc("select*from`$t`");

foreach($a1as$data){

$vals=array_values($data);

$vals=array_map('addsla

shes',$vals);

$vals=join("','",$vals);

$vals="'".$vals."'";

$mysql.="INSERTINTO`$t`VALUES($vals);rn";

}

$mysql.="rn";

filein($filename,$t,$mysql);

}

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

?>

您可能感兴趣的文章:thinkPHP使用pclzip打包备份mysql数据库的方法使用PHP备份MYSQL数据的多种方法使用PHP备份MySQL和网站发送到邮箱实例代码PHPXML备份Mysql数据库用PHP实现XML备份Mysql数据库PHP备份/还原MySQL数据库的代码php实现MySQL数据库备份与还原类实例详解MYSQL的备份还原(PHP实现)mysql命令行还原phpMyAdmin导出的含有中文的SQL文件php简单备份与还原MySql的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值