php备份指定数据库table数据

//定义的备份处理Database类
<?php 
/**
* 数据备份类
*/
class Database
{
	protected $host;
	protected $username;
	protected $password;
	protected $dbname;
	/**
	 * 简单说明
	 */
	//array_keys() 函数返回包含数组中所有键名的一个新数组。
	//array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。
	//addslashes() 函数在指定的预定义字符前添加反斜杠。
	//array_map() 函数返回用户自定义函数作用后的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致
	//join() 函数把数组元素组合为一个字符串。


	/**
	 * 链接数据库
	 */
	public function connect()
	{
		if (!mysql_connect("$this->host","$this->username","$this->password")) {
			return false;
		}
		if (!mysql_select_db("$this->dbname")) {
			return false;
		}

		return true;	

	}


	/**
	 * 读取数据,功能:循环读取数据每张表,再获取每张table的创建结构,再获取insert语句,组合成.sql文件里面的数据结构,最后把获取到的数据赋给变量$mysql,再return出去
	 */
	public function getdata()
	{
		$mysql = "SET FOREIGN_KEY_CHECKS=0;\r\nset charset utf8;\r\n";
		$sql = mysql_query("show tables");
		while ($t = mysql_fetch_array($sql)) {
			//获取表名
			$table = $t[0];
			//获取创建的table的结构:$sql
			$createtable = mysql_query("show create table $table");
			$createtable = mysql_fetch_array($createtable);
			$mysql .= "DROP TABLE IF EXISTS '$table'" . ";\r\n";
			$mysql .= @$createtable['Create Table'] . ";\r\n";

			//获取表里面的数据
			$result = mysql_query("select * from $table");

			while ($data = mysql_fetch_assoc($result)) {
				$keys = array_keys($data);
				$keys = array_map('addslashes', $keys);
				$keys = join(',',$keys);
				$keys = "'".$keys."'";
				$value = array_values($data);
				$value = array_map('addslashes', $data);
				$value = join(',',$value);

				$mysql .= "insert into '$table'($keys) values($value);\r\n";
			}
		}

		return $mysql;
		
	}

	/**
	 * 备份数据:功能:获取getdata()方法获取到的.sql文件内容,然后设置备份命名规则,此处设置的是当前位置,根据自己再去定义,然后打开文件写入内容,再关闭写入权限
	 */
	public function backup($mysql)
	{
		$filename = $this->dbname . date('Ymjgi') . ".sql";
		$fp = fopen($filename, 'w');
		fputs($fp,$mysql);
		fclose($fp);
	}

	//执行:功能:传值,运行上面定义好的方法,最后反馈状态
	public function runprogram($host,$username,$password,$dbname)
	{
		$this->host = $host;
		$this->username = $username;
		$this->password = $password;
		$this->dbname = $dbname;

		//判断链接数据库
		$status = self::connect();
		if ($status ==  false) {
			return false;
		}
		mysql_query("set names utf8"); //链接正常选择数据库后再设置编码,注意顺序
		//读取数据
		$mysql = self::getdata();
		//写入数据
		self::backup($mysql);

		return true;

	}
	
}




?>

调用方法:
<?php 
require 'Database.php';
header("Content-type: text/html; charset=utf-8"); 

$db = New Database();
$status = $db->runprogram('127.0.0.1','root','','robot'); //$host,$username,$password,$dbname
if ($status) {
	echo '备份成功';
}else{
	echo '备份失败,请核对数据';
}




 ?>



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值