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


Posted in PHP onMay 28, 2010
<?php 
$cfg_dbhost ='localhost';//mysql主机 
$cfg_dbname ='sq_test';//数据库名 
$cfg_dbuser ='root';//数据库用户名 
$cfg_dbpwd ='3water.com';//数据库用户密码 
$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 相关文章推荐
全文搜索和替换
Oct 09 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
May 27 #PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 #PHP
PHP 可阅读随机字符串代码
May 26 #PHP
PHP 一个随机字符串生成代码
May 26 #PHP
PHP 循环列出目录内容的函数代码
May 26 #PHP
PHP 删除一个目录及目录下的所有文件的函数代码
May 26 #PHP
PHP JSON 数据解析代码
May 26 #PHP
You might like
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
PHP4实际应用经验篇(8)
2006/10/09 PHP
php的字符串用法小结
2010/06/08 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
vue项目上传Github预览的实现示例
2018/11/06 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
基于django传递数据到后端的例子
2019/08/16 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
商业融资计划书
2014/04/29 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
卖房协议书样本
2014/10/30 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
信用卡收入证明范本
2015/06/12 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
导游词之大雁塔景区
2019/09/17 职场文书