使用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中取得URL的根域名的代码
Mar 23 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
跟我学Laravel之快速入门
Oct 15 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
PHP面向对象详解(三)
Dec 07 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
php微信开发之音乐回复功能
Jun 14 PHP
有关PHP 中 config.m4 的探索
Aug 26 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类中private属性继承问题分析
2012/11/01 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
js 单引号 传递方法
2009/06/22 Javascript
jQuery的学习步骤
2011/02/23 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
token 机制和实现方式
2020/12/15 Javascript
Python中shutil模块的学习笔记教程
2017/04/04 Python
Python 调用Java实例详解
2017/06/02 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
美容院考勤制度
2014/01/30 职场文书
快餐公司创业计划书
2014/04/29 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书