使用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 相关文章推荐
推荐文章系统(一)
Oct 09 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
PHP 验证身份证是否合法的函数
Feb 09 PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
Laravel框架自定义分页样式操作示例
Jan 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之第二天
2006/10/09 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
js a标签点击事件
2017/03/30 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
深入学习Python中的上下文管理器与else块
2017/08/27 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
OpenCV 模板匹配
2019/07/10 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年教研工作总结
2014/12/06 职场文书