备份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中empty is_null和isset的测试
Jun 29 PHP
浅析php中如何在有限的内存中读取大文件
Jul 02 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
ucenter通信原理分析
Jan 09 PHP
PHP生成短网址方法汇总
Jul 12 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 PHP
PHP dirname功能及原理实例解析
Oct 28 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
网页中的图片的处理方法与代码
2009/11/26 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
python将回车作为输入内容的实例
2018/06/23 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
产品销售员岗位职责
2013/12/18 职场文书
农民工创业典型事迹
2014/01/25 职场文书
超市促销活动方案
2014/03/05 职场文书
出生公证委托书
2014/04/03 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python