服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - PHP教程 - 备份mysql数据库的php代码(一个表一个文件)

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

2019-10-31 14:18php代码网 PHP教程

用php实现的备份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."<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/>\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."/<br/>程序自动清理5天以前的备份"; 
?> 

延伸 · 阅读

精彩推荐
  • PHP教程php中错误处理操作实例分析

    php中错误处理操作实例分析

    这篇文章主要介绍了php中错误处理操作,结合实例形式分析了php错误的触发、处理、日志记录等相关操作技巧,需要的朋友可以参考下...

    cscsdvdsv2832019-08-28
  • PHP教程使用PHPUnit进行单元测试并生成代码覆盖率报告的方法

    使用PHPUnit进行单元测试并生成代码覆盖率报告的方法

    这篇文章主要介绍了使用PHPUnit进行单元测试并生成代码覆盖率报告的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看...

    big_cat2112019-06-04
  • PHP教程php出现Cannot modify header information问题的解决方法大全

    php出现Cannot modify header information问题的解决方法大全

    我做了一个统一的出错提示函数,在函数执行里面,先处理出错的地址写入cookie以方便用户登陆以后可以直接跳转到要执行的这个页面,可是发现在服务器上测...

    php教程网4292019-10-28
  • PHP教程php实现微信企业转账功能

    php实现微信企业转账功能

    这篇文章主要为大家详细介绍了php实现微信企业转账功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Mr_Yanghao2272019-09-03
  • PHP教程PHP本地进行API接口测试的实例

    PHP本地进行API接口测试的实例

    下面小编就为大家分享一篇PHP本地进行API接口测试的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    江南极客5022019-10-16
  • PHP教程PHP的PDO事务与自动提交

    PHP的PDO事务与自动提交

    今天小编就为大家分享一篇关于PHP的PDO事务与自动提交,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    php参考手册3582019-06-28
  • PHP教程PDO::prepare讲解

    PDO::prepare讲解

    今天小编就为大家分享一篇关于PDO::prepare讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    php参考手册4162019-06-26
  • PHP教程php通过pecl方式安装扩展的实例讲解

    php通过pecl方式安装扩展的实例讲解

    下面小编就为大家分享一篇php通过pecl方式安装扩展的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    D_Chen_2052019-10-23