备份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 相关文章推荐
php+mysql写的简单留言本实例代码
Jul 25 PHP
PHP EOT定界符的使用详解
Sep 30 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
php发送post请求的三种方法
Feb 11 PHP
thinkphp控制器调度使用示例
Feb 24 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
浅谈PHP各环境下的伪静态配置
Mar 13 PHP
PHP匿名函数(闭包函数)详解
Mar 22 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
php字符串分割函数用法实例
2015/03/17 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
精通Javascript系列之数值计算
2011/06/07 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
Python的requests网络编程包使用教程
2016/07/11 Python
python如何为创建大量实例节省内存
2018/03/20 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
python实现代码统计器
2019/09/19 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
会计找工作求职信范文
2013/12/09 职场文书
2014年党课学习材料
2014/05/11 职场文书
药品开票员岗位职责
2015/04/15 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
python运算符之与用户交互
2022/04/13 Python