备份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中常用的预定义变量小结
May 09 PHP
php标签云的实现代码
Oct 10 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
PHP语法自动检查的Vim插件
Aug 11 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 PHP
纯php生成随机密码
Oct 30 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 PHP
浅谈laravel中的关联查询with的问题
Oct 10 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 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实现商品成交时发送短信功能
2016/05/11 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python和php学习哪个更有发展
2020/06/17 Python
python3跳出一个循环的实例操作
2020/08/18 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
德国购买健身器材:AsVIVA
2017/08/09 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
英文自荐信
2013/12/19 职场文书
全陪导游欢迎词
2014/01/17 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
工作年限证明范本
2015/06/15 职场文书
家长会后的感想
2015/08/11 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS