0

0

php mysql 数据库备份程序

php中文网

php中文网

发布时间:2016-05-26 15:22:06

|

1124人浏览过

|

来源于php中文网

原创

提供一款实例的php mysql 数据库备份程序,很好方法的可以对你的数据库进行在线实时备份,这样可以保存数据库的安全,并且他是以.sql文件保存在bakdata目录还日期生成的数据库备份文件的,代码如下:

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> 
	<html xmlns="http://www.w3.org/1999/xhtml"> 
	<head> 
	<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
	<link type="text/css" rel="stylesheet" href="common/control.css"> 
	<script type="text/javascript" language="javascript" src="common/admin.otable.js"></script> 
	<script type="text/javascript" language="javascript" src="common/include.func.js"></script> 
	<title>数据管理</title> 
	<style type="text/css"> 
	span {padding-left:8px;} 
	</style> 
	</head> 
	<body class="contentbody"> 
	<div class="maindiv"> 
	<span class="ctitle">esweb系统数据管理</span> 
	<ul class="cmenu"> 
	 <li><a href="sql_backup.php">数据备份</a></li> 
	    <li><a href="sql_restore.php">数据还原</a></li> 
	 <li><a href="sql_optimize.php">数据优化</a> 
	</ul> 
	<div class="concontent"> 
	<?php 
	/*--------------界面--------------*/if(!$_post['act']){/*----------------------*/ 
	$msgs[]="服务器备份目录为$backup"; 
	$msgs[]="对于较大的数据表,强烈建议使用分卷备份"; 
	$msgs[]="只有选择备份到服务器,才能使用分卷备份功能"; 
	//show_msg($msgs); 
	 
	<div class="thead"><span class="left">@@##@@ 如果需要备份、还原或者优化<font color="red"> 大量的数据 </font>, 推荐使用"<a href="http://www.phome.net/ebak2010/" target="_blank">帝国备份王2010</a>"</span> <span class="right"></span></div> 
	<form name="myform" method="post" action="sql_backup.php"> 
	<table cellpadding="" cellspacing="0" border="0" width="100%" class="ctable" id="otable" align="center"> 
	<tr> 
	 <th colspan="2">esweb系统数据备份</th> 
	</tr> 
	<tr> 
	 <td align="right" width="250">选择备份方式</td> 
	    <td><input type="radio" name="bfzl" value="quanbubiao" checked="checked" />备份全部数据  
	    <input type="radio" name="bfzl" value="danbiao" />备份单张表数据   
	    <select name="tablename"><option value="">请选择</option> 
	    <?php 
	    $d->query("show table status from $mysqldb"); 
	    while($d->nextrecord()){ 
	    echo "<option value='".$d->f('name')."'>".$d->f('name')."</option>";} 
	     
	    </select></td> 
	</tr> 
	<tr> 
	 <td align="right">选择目标位置</td> 
	    <td><input type="radio" name="weizhi" value="server" checked="checked" />备份到服务器  
	    <input type="radio" name="weizhi" value="localpc" />备份到本地</td> 
	</tr> 
	<tr> 
	 <td align="right">使用分卷备份</td> 
	    <td><input type="checkbox" name="fenjuan" value="yes" checked="checked" /> 
	    分卷备份 <input name="filesize" type="text" value="1260" size="10" class="text2" /> k <span>(只有选择备份到服务器,才能使用分卷备份功能)</span></td> 
	</tr> 
	<tr> 
	 <td align="right">程序说明</td> 
	    <td>1.对于较大的数据表,强烈建议使用分卷备份. 
	    <br>2.只有选择备份到服务器,才能使用分卷备份功能. 
	    </td> 
	</tr> 
	<tr> 
	 <td align="center" colspan="2"><input type="submit" id="act" name="act" value="备 份" class="button" /> <input type="reset" value="重 置" class="button" /></td> 
	</tr> 
	</table> 
	</form> 
	<?php /*-------------界面结束-------------*/}/*---------------------------------*/ 
	/*----*/else{/*--------------主程序-----------------------------------------*/ 
	if($_post['weizhi']=="localpc"&&$_post['fenjuan']=='yes') 
	{$msgs[]="只有选择备份到服务器,才能使用分卷备份功能"; 
	show_msg($msgs); pageend();} 
	if($_post['fenjuan']=="yes"&&!$_post['filesize']) 
	{$msgs[]="您选择了分卷备份功能,但未填写分卷文件大小"; 
	show_msg($msgs); pageend();} 
	if($_post['weizhi']=="server"&&!writeable($backup)) 
	{$msgs[]="备份文件存放目录'$backup'不可写,请修改目录属性"; 
	show_msg($msgs); pageend();} 
	/*----------备份全部表-------------*/if($_post['bfzl']=="quanbubiao"){/*----*/ 
	/*----不分卷*/if(!$_post['fenjuan']){/*--------------------------------*/ 
	if(!$tables=$d->query("show table status from $mysqldb")) 
	{$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();} 
	$sql=""; 
	while($d->nextrecord($tables)) 
	{ 
	$table=$d->f("name"); 
	$sql.=make_header($table); 
	$d->query("select * from $table"); 
	$num_fields=$d->nf(); 
	while($d->nextrecord()) 
	{$sql.=make_record($table,$num_fields);} 
	} 
	$filename=date("ymd",time())."_all.sql"; 
	if($_post['weizhi']=="localpc") down_file($sql,$filename); 
	elseif($_post['weizhi']=="server") 
	{if(write_file($sql,$filename)) 
	$msgs[]="全部数据表数据备份完成,生成备份文件'$backup/$filename'"; 
	else $msgs[]="备份全部数据表失败"; 
	show_msg($msgs); 
	pageend(); 
	} 
	/*-----------------不要卷结束*/}/*-----------------------*/ 
	/*-----------------分卷*/else{/*-------------------------*/ 
	if(!$_post['filesize']) 
	{$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();} 
	if(!$tables=$d->query("show table status from $mysqldb")) 
	{$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();} 
	$sql=""; $p=1; 
	$filename=date("ymd",time())."_all"; 
	while($d->nextrecord($tables)) 
	{ 
	$table=$d->f("name"); 
	$sql.=make_header($table); 
	$d->query("select * from $table"); 
	$num_fields=$d->nf(); 
	while($d->nextrecord()) 
	{$sql.=make_record($table,$num_fields); 
	if(strlen($sql)>=$_post['filesize']*1000){ 
	     $filename.=("_v".$p.".sql"); 
	     if(write_file($sql,$filename)) 
	     $msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'"; 
	     else $msgs[]="备份表-".$_post['tablename']."-失败"; 
	     $p++; 
	     $filename=date("ymd",time())."_all"; 
	     $sql="";} 
	} 
	} 
	if($sql!=""){$filename.=("_v".$p.".sql");   
	if(write_file($sql,$filename)) 
	$msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'";} 
	show_msg($msgs); 
	/*---------------------分卷结束*/}/*--------------------------------------*/ 
	/*--------备份全部表结束*/}/*---------------------------------------------*/ 
	/*--------备份单表------*/elseif($_post['bfzl']=="danbiao"){/*------------*/ 
	if(!$_post['tablename']) 
	{$msgs[]="请选择要备份的数据表"; show_msg($msgs); pageend();} 
	/*--------不分卷*/if(!$_post['fenjuan']){/*-------------------------------*/ 
	$sql=make_header($_post['tablename']); 
	$d->query("select * from ".$_post['tablename']); 
	$num_fields=$d->nf(); 
	while($d->nextrecord()) 
	{$sql.=make_record($_post['tablename'],$num_fields);} 
	$filename=date("ymd",time())."_".$_post['tablename'].".sql"; 
	if($_post['weizhi']=="localpc") down_file($sql,$filename); 
	elseif($_post['weizhi']=="server") 
	{if(write_file($sql,$filename)) 
	$msgs[]="表-".$_post['tablename']."-数据备份完成,生成备份文件'$backup/$filename'"; 
	else $msgs[]="备份表-".$_post['tablename']."-失败"; 
	show_msg($msgs); 
	pageend(); 
	} 
	/*----------------不要卷结束*/}/*------------------------------------*/ 
	/*----------------分卷*/else{/*--------------------------------------*/ 
	if(!$_post['filesize']) 
	{$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();} 
	$sql=make_header($_post['tablename']); $p=1;  
	$filename=date("ymd",time())."_".$_post['tablename']; 
	$d->query("select * from ".$_post['tablename']); 
	$num_fields=$d->nf(); 
	while ($d->nextrecord())  
	{  
	    $sql.=make_record($_post['tablename'],$num_fields); 
	      if(strlen($sql)>=$_post['filesize']*1000){ 
	     $filename.=("_v".$p.".sql"); 
	     if(write_file($sql,$filename)) 
	     $msgs[]="表-".$_post['tablename']."-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'"; 
	     else $msgs[]="备份表-".$_post['tablename']."-失败"; 
	     $p++; 
	     $filename=date("ymd",time())."_".$_post['tablename']; 
	     $sql="";} 
	} 
	if($sql!=""){$filename.=("_v".$p.".sql");   
	if(write_file($sql,$filename)) 
	$msgs[]="表-".$_post['tablename']."-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'";} 
	show_msg($msgs); 
	/*----------分卷结束*/}/*--------------------------------------------------*/ 
	/*----------备份单表结束*/}/*----------------------------------------------*/ 
	/*---*/}/*-------------主程序结束------------------------------------------*/ 
	function write_file($sql,$filename) 
	{ 
	$re=true; 
	global $backup; 
	if(!@$fp=fopen($backup."/".$filename,"w+")) {$re=false; echo "failed to open target file";} 
	if(!@fwrite($fp,$sql)) {$re=false; echo "failed to write file";} 
	if(!@fclose($fp)) {$re=false; echo "failed to close target file";} 
	return $re; 
	} 
	function down_file($sql,$filename) 
	{ 
	ob_end_clean(); 
	header("content-encoding: none"); 
	header("content-type: ".(strpos($_server['http_user_agent'], 'msie') ? 'application/octetstream' : 'application/octet-stream')); 
	    
	header("content-disposition: ".(strpos($_server['http_user_agent'], 'msie') ? 'inline; ' : 'attachment; ')."filename=".$filename); 
	    
	header("content-length: ".strlen($sql)); 
	header("pragma: no-cache"); 
	    
	header("expires: 0"); 
	echo $sql; 
	$e=ob_get_contents(); 
	ob_end_clean(); 
	} 
	function writeable($dir) 
	{ 
	if(!is_dir($dir)) { 
	@mkdir($dir, 0777); 
	} 
	if(is_dir($dir))  
	{ 
	if($fp = @fopen("$dir/test.test", 'w')) 
	    { 
	@fclose($fp); 
	@unlink("$dir/test.test"); 
	$writeable = 1; 
	}  
	else { 
	$writeable = 0; 
	} 
	} 
	return $writeable; 
	} 
	function make_header($table) 
	{global $d; 
	$sql="drop table if exists ".$table." "; 
	$d->query("show create table ".$table); 
	$d->nextrecord(); 
	$tmp=preg_replace("/ /","",$d->f("create table")); 
	$sql.=$tmp." "; 
	return $sql; 
	} 
	function make_record($table,$num_fields) 
	{global $d; 
	$comma=""; 
	$sql .= "insert into ".$table." values("; 
	for($i = 0; $i < $num_fields; $i++)  
	{$sql .= ($comma."'".mysql_escape_string($d->record[$i])."'"); $comma = ",";} 
	$sql .= ") "; 
	return $sql; 
	} 
	function show_msg($msgs) 
	{ 
	$title="提示:"; 
	echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>"; 
	echo "<tr><td>".$title."</td></tr>"; 
	echo "<tr><td><br><ul>"; 
	while (list($k,$v)=each($msgs)) 
	{ 
	echo "<li>".$v."</li>"; 
	} 
	echo "</ul></td></tr></table>"; 
	} 
	function pageend() 
	{ 
	exit(); 
	} 
	 
	</div><br /><br /> 
	</div> 
	</div> 
	</body> 
	</html> 
	class db{ 
	var $linkid; 
	var $sqlid; 
	var $record; 
	function db($host="",$username="",$password="",$database="") 
	{ 
	if(!$this->linkid)    @$this->linkid = mysql_connect($host, $username, $password) or die("连接服务器失败."); 
	@mysql_select_db($database,$this->linkid) or die("无法打开数据库"); 
	return $this->linkid;} 
	function query($sql) 
	{if($this->sqlid=mysql_query($sql,$this->linkid)) return $this->sqlid; 
	else { 
	    $this->err_report($sql,mysql_error); 
	return false;} 
	} 
	function nr($sql_id="") 
	{if(!$sql_id) $sql_id=$this->sqlid; 
	return mysql_num_rows($sql_id);} 
	function nf($sql_id="") 
	{if(!$sql_id) $sql_id=$this->sqlid; 
	return mysql_num_fields($sql_id);} 
	function nextrecord($sql_id="") 
	{if(!$sql_id) $sql_id=$this->sqlid; 
	if($this->record=mysql_fetch_array($sql_id))    return $this->record; 
	else return false; 
	} 
	function f($name) 
	{ 
	if($this->record[$name]) return $this->record[$name]; 
	else return false; 
	} 
	function close() {mysql_close($this->linkid);} 
	function lock($tblname,$op="write") 
	{if(mysql_query("lock tables ".$tblname." ".$op)) return true; else return false;} 
	function unlock() 
	{if(mysql_query("unlock tables")) return true; else return false;} 
	function ar() { 
	      return @mysql_affected_rows($this->linkid); 
	    } 
	function i_id() { 
	    return mysql_insert_id(); 
	} 
	function err_report($sql,$err) 
	{ 
	echo "mysql查询错误<br>"; 
	echo "查询语句:".$sql."<br>"; 
	echo "错误信息:".$err; 
	}//开源代码phprm.com 
	/****************************************类结束***************************/ 
	 
	global $mysqlhost, $mysqluser, $mysqlpwd, $mysqldb, $backup; 
	$mysqlhost = $mydbhost;          //host name 
	$mysqluser = $mydbuser;          //login name 
	$mysqlpwd = $mydbpw;             //password 
	$mysqldb = $mydbname;            //name of database 
	$d=new db($mysqlhost,$mysqluser,$mysqlpwd,$mysqldb); 
	$d->query("set names 'utf8'");

本文链接:

如意雅阁o2oMall集市
如意雅阁o2oMall集市

如意雅阁o2oMall集市基于PHP+Mysql开发的电脑访问、手机访问方式数据互融互通,后台涵盖了订单管理、会员管理、推广员、CRM客户管理、营销推广管理、财务管理、统计报表。全面适应020 o2o模式的商城集市整站程序。

下载

收藏随意^^请保留教程地址.

php mysql 数据库备份程序
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

463

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

135

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

64

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

26

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

14

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

524

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

53

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号