使用php自动备份数据库表的实现方法


Posted in PHP onJuly 28, 2017

1、前言

mysql数据库的备份方式有很多;

例如:

1、使用mysqldump函数

mysqldump -u username -p dbname table1 table2 ... > BackupName.sql

dbname参数表示数据库的名称

table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;

BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件;

基本使用:

使用php自动备份数据库表的实现方法

2、管理工具

使用php自动备份数据库表的实现方法

备份数据库的方法很多,上面两种比较常见

而本次主要讲解如何通过php函数来自动备份数据库

2、相关函数介绍

2.1 、fopen

详情参考:http://www.w3school.com.cn/php/func_filesystem_fopen.asp

使用php自动备份数据库表的实现方法

2.2、array_keys

详情参考:http://www.w3school.com.cn/php/func_array_keys.asp

使用php自动备份数据库表的实现方法

2.3、array_values

使用php自动备份数据库表的实现方法

2.4、implode

详情参考:http://www.w3school.com.cn/php/func_string_implode.asp

使用php自动备份数据库表的实现方法

2.5、substr

详情参考:http://www.w3school.com.cn/php/func_string_substr.asp

使用php自动备份数据库表的实现方法

2.6、fwrite

详情参考:https://www.w3cschool.cn/php/func-filesystem-fwrite.html

使用php自动备份数据库表的实现方法

3、实现思路

使用php自动备份数据库表的实现方法

4、代码构成

/**
 * [copyDb description] 备份数据库
 * @param [type] $dbname [description] 数据库名
 * @param [type] $fileName [description] 存储的文件名
 * @return [type]   [description]
 */
public function copyDb($dbname, $fileName){
	$myfile = fopen($fileName, "w") or die("Unable to open file!");//打开存储文件
	$this->link->query("use {$dbname}");//切换数据库
	$this->changeDb($dbname);
	$tables = $this->link->query('show tables');//获取当期数据库所有表名称
	while($re = $tables->fetch(PDO::FETCH_ASSOC)){
		//var_dump($re);//查看数组构成
		$tableName = $re['Tables_in_'.$dbname];//构成特定的下标
		$sql = "show create table {$tableName};";
		$tableSql = $this->link->query($sql);

		fwrite($myfile, "DROP TABLE IF EXISTS `{$tableName}`;\r\n");//加入默认删除表的遇见
		//下面备份表结构,这个循环之执行一次
		while($re = $tableSql->fetch(PDO::FETCH_ASSOC)){
			// echo "<pre>";
			// var_dump($re);
			// echo "</pre>";
			echo "正在备份表{$re['Table']}结构<br/>";
			fwrite($myfile, $re['Create Table'].";\r\n\r\n");
			echo "正在备份表{$re['Table']}结构完成<br/>";
		}
		//下面备份表数据
		echo "正在备份表{$tableName}数据<br/>";
		$sql = "select * from {$tableName};";
		$valueSql = $this->link->query($sql);
		while($re = $valueSql->fetch(PDO::FETCH_ASSOC)){
			$keyArr = array_keys($re);//获得对应的键值
			$valueArr = array_values($re);//获得对应的值
	
			$keyStr = '';
			foreach ($keyArr as $key => $value) {
				$keyStr .= "`".$value."`,";
			}
			$keyStr = substr($keyStr,0,strlen($keyStr)-1); //取出最后一个逗号


			$valueStr = '';
			// var_dump($valueArr);
			foreach ($valueArr as $key => $value) {
				$valueStr .= "'".$value."',";
			}
			//以上的处理只是对应sql的写法

			$valueStr = substr($valueStr,0,strlen($valueStr)-1); //取出最后一个逗号
			$sql = "insert into `{$tableName}`({$keyStr}) values({$valueStr})";
			fwrite($myfile, $sql.";\r\n\r\n");
			
		}
		echo "正在备份表{$tableName}数据完成<br/>";
		echo "<br/><hr/>";
	}
	fclose($myfile);
}

5、结语

备份数据库的主要过程:

切换到对应的数据库;

使用show create table tableName,获得表结构,写到文件中;

然后查询所有的表数据,循环生成相对应sql语句,写到文件中;

试运行生成的sql文件;

以上这篇使用php自动备份数据库表的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
初级的用php写的采集程序
Mar 16 PHP
php邮件发送,php发送邮件的类
Mar 24 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
laravel安装和配置教程
Oct 29 PHP
php延迟静态绑定实例分析
Feb 08 PHP
详解PHP数组赋值方法
Nov 07 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
php生成条形码的图片的实例详解
Sep 13 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
关于PHP求解三数之和问题详析
Nov 09 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 #PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 #PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 #PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 #PHP
PHP实现的Redis多库选择功能单例类
Jul 27 #PHP
PHP策略模式定义与用法示例
Jul 27 #PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 #PHP
You might like
PHP使用静态方法的几个注意事项
2014/09/16 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
python字符串替换的2种方法
2014/11/30 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
Python绘制组合图的示例
2020/09/18 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
在线课程:Skillshare
2019/04/02 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
应用数学自荐书范文
2013/11/24 职场文书
小学生获奖感言范文
2014/02/02 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
代领毕业证委托书
2014/08/02 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
唐山大地震的观后感
2015/06/05 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
60句有关成长的名言
2019/09/04 职场文书