<?php
require_once("backdata.class.php");
$link = @mysql_connect("localhost","root","123456") or die ('Could not connect to server.');
mysql_query("use student",$link);
mysql_query("set names utf8",$link);
$dbbck=new backupData($link);//实例化它,只要一个链接标识就行了
$teblename = $_REQUEST['beifen'];
// echo 'sdfas'.$teblename;
//备份数据时,如想备份一个数据库中的所有表,你可这样写:
//$dbbck->backupTables("student","./",array('*'));
//备份数据时,如想备份一个数据库中的仅一个表时,你可这样写:
if($teblename=='totao'){
$dbbck->backupTables("student","data/",array('totaopingfen','secondpingfen'));
}else{
$dbbck->backupTables("student","data/",array($teblename));
}
//备份数据时,如想备份一个数据库中的多个表时,你可这样写:
//$dbbck->backupTables("student","./",array('class','kq_xsjbxxb','kq_xsjbxxb'));
?>
<?php
/*
*
*简单的一个Mysql备份数据类
*
*/
class backupData{
private $mysql_link;//链接标识
private $dbName; //数据库名
private $dataDir; //数据所要存放的目录
private $tableNames;//表名
public function __construct($mysql_link){
$this->mysql_link = $mysql_link;
}
public function backupTables($dbName,$dataDir,$tableNames){//开始备份
$this->dbName = $dbName;
$this->dataDir = $dataDir;
$this->tableNames = $tableNames;
$tables=$this->delarray($this->tableNames);
$sqls='';
foreach($tables as $tablename){
if($tablename==''){//表不存在时
continue;
}
//echo $dbName;
//************************以下是形成SQL的前半部分**************
//如果存在表,就先删除
$sqls .= "DROP TABLE IF EXISTS $tablename;n";
//读取表结构
$rs = mysql_query("SHOW CREATE TABLE $tablename",$this->mysql_link);
$row=mysql_fetch_row($rs);
//获得表结构组成SQL
$sqls.=$row['1'].";nn";
unset($rs);
unset($row);
//************************以下是形成SQL的后半部分**************
//查寻出表中的所有数据
$rs=mysql_query("select * from $tablename",$this->mysql_link);
//表的字段个数
$field=mysql_num_fields($rs);
//形成此种SQL语句:"INSERT INTO `groups` VALUES('1499e0ca25988d','主任','','0');"
while($rows=mysql_fetch_row($rs)){
$comma='';//逗号
$sqls.="INSERT INTO `$tablename` VALUES(";
for($i=0;$i<$field;$i++){
$sqls.=$comma."'".$rows[$i]."'";
$comma=',';
}
$sqls.=");nnn";
}
}
$backfilepath=$this->dataDir.date("Ymdhis",time()).'.sql';
//echo $backfilepath;
//写入文件
$filehandle = fopen($backfilepath, "w");
fwrite($filehandle, $sqls);
fclose($filehandle);
echo '数据备份成功';
}
private function delarray($array){
//echo 'BBBBBBBBBBb'; //处理传入进来的数组
foreach($array as $tables){
if($tables=='*'){ //所有的表(获得表名时不能按常规方式来组成一个数组)
$newtables=mysql_list_tables($this->dbName,$this->mysql_link);
$tableList = array();
for ($i = 0; $i < mysql_numrows($newtables); $i++){
array_push($tableList,mysql_tablename($newtables, $i));
}
$tableList=$tableList;
}else{
$tableList=$array;
break;
}
}
return $tableList;
}
}
require_once("backdata.class.php");
$link = @mysql_connect("localhost","root","123456") or die ('Could not connect to server.');
mysql_query("use student",$link);
mysql_query("set names utf8",$link);
$dbbck=new backupData($link);//实例化它,只要一个链接标识就行了
$teblename = $_REQUEST['beifen'];
// echo 'sdfas'.$teblename;
//备份数据时,如想备份一个数据库中的所有表,你可这样写:
//$dbbck->backupTables("student","./",array('*'));
//备份数据时,如想备份一个数据库中的仅一个表时,你可这样写:
if($teblename=='totao'){
$dbbck->backupTables("student","data/",array('totaopingfen','secondpingfen'));
}else{
$dbbck->backupTables("student","data/",array($teblename));
}
//备份数据时,如想备份一个数据库中的多个表时,你可这样写:
//$dbbck->backupTables("student","./",array('class','kq_xsjbxxb','kq_xsjbxxb'));
?>
<?php
/*
*
*简单的一个Mysql备份数据类
*
*/
class backupData{
private $mysql_link;//链接标识
private $dbName; //数据库名
private $dataDir; //数据所要存放的目录
private $tableNames;//表名
public function __construct($mysql_link){
$this->mysql_link = $mysql_link;
}
public function backupTables($dbName,$dataDir,$tableNames){//开始备份
$this->dbName = $dbName;
$this->dataDir = $dataDir;
$this->tableNames = $tableNames;
$tables=$this->delarray($this->tableNames);
$sqls='';
foreach($tables as $tablename){
if($tablename==''){//表不存在时
continue;
}
//echo $dbName;
//************************以下是形成SQL的前半部分**************
//如果存在表,就先删除
$sqls .= "DROP TABLE IF EXISTS $tablename;n";
//读取表结构
$rs = mysql_query("SHOW CREATE TABLE $tablename",$this->mysql_link);
$row=mysql_fetch_row($rs);
//获得表结构组成SQL
$sqls.=$row['1'].";nn";
unset($rs);
unset($row);
//************************以下是形成SQL的后半部分**************
//查寻出表中的所有数据
$rs=mysql_query("select * from $tablename",$this->mysql_link);
//表的字段个数
$field=mysql_num_fields($rs);
//形成此种SQL语句:"INSERT INTO `groups` VALUES('1499e0ca25988d','主任','','0');"
while($rows=mysql_fetch_row($rs)){
$comma='';//逗号
$sqls.="INSERT INTO `$tablename` VALUES(";
for($i=0;$i<$field;$i++){
$sqls.=$comma."'".$rows[$i]."'";
$comma=',';
}
$sqls.=");nnn";
}
}
$backfilepath=$this->dataDir.date("Ymdhis",time()).'.sql';
//echo $backfilepath;
//写入文件
$filehandle = fopen($backfilepath, "w");
fwrite($filehandle, $sqls);
fclose($filehandle);
echo '数据备份成功';
}
private function delarray($array){
//echo 'BBBBBBBBBBb'; //处理传入进来的数组
foreach($array as $tables){
if($tables=='*'){ //所有的表(获得表名时不能按常规方式来组成一个数组)
$newtables=mysql_list_tables($this->dbName,$this->mysql_link);
$tableList = array();
for ($i = 0; $i < mysql_numrows($newtables); $i++){
array_push($tableList,mysql_tablename($newtables, $i));
}
$tableList=$tableList;
}else{
$tableList=$array;
break;
}
}
return $tableList;
}
}
?>
本文转自yunlielai51CTO博客,原文链接:http://blog.51cto.com/4925054/1109538,如需转载请自行联系原作者