功能上有:
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設計制作、網(wǎng)站制作與策劃設計,墨竹工卡網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設10多年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:墨竹工卡等地區(qū)。墨竹工卡做網(wǎng)站價格咨詢:18982081108
-
require_once("backdata.class.php");
$link
=
@mysql_connect("localhost","數(shù)據(jù)庫名","密碼")
or
die
('Could
not
connect
to
server.');
mysql_query("use
cms",$link);
mysql_query("set
names
utf8",$link);
$dbbck=new
backupData($link);//實例化它,只要一個鏈接標識就行了
//備份數(shù)據(jù)時,如想備份一個數(shù)據(jù)庫中的所有表,你可這樣寫:
$dbbck-backupTables("cms","./",array('*'));
-
//備份數(shù)據(jù)時,如想備份一個數(shù)據(jù)庫中的僅一個表時,你可這樣寫:
$dbbck-backupTables("cms","./",array('user'));
-
//備份數(shù)據(jù)時,如想備份一個數(shù)據(jù)庫中的多個表時,你可這樣寫:
-
$dbbck-backupTables("cms","./",array('user','acl','informatoin'));
//注解:$dbbck-backupTables("參1","參2",array());中,
參1為:數(shù)據(jù)庫名,
參2為:要存放備份數(shù)據(jù)的位置(即目錄地址)
第三個為:你要保存那些表
ok...
-
以下為代碼:
復制代碼
代碼如下:
?php
/*
*
*簡單的一個備份數(shù)據(jù)類
*author
FC
*
*/
class
backupData{
private
$mysql_link;//鏈接標識
private
$dbName;//數(shù)據(jù)庫名
private
$dataDir;
//數(shù)據(jù)所要存放的目錄
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;
}
//************************以下是形成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'].";\n\n";
unset($rs);
unset($row);
//************************以下是形成SQL的后半部分**************
//查尋出表中的所有數(shù)據(jù)
$rs=mysql_query("select
*
from
$tablename",$this-mysql_link);
//表的字段個數(shù)
$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.=");\n\n\n";
}
}
$backfilepath=$this-dataDir.date("Ymdhis",time()).'.sql';
//寫入文件
$filehandle
=
fopen($backfilepath,
"w");
fwrite($filehandle,
$sqls);
fclose($filehandle);
}
-
private
function
delarray($array){//處理傳入進來的數(shù)組
foreach($array
as
$tables){
if($tables=='*'){//所有的表(獲得表名時不能按常規(guī)方式來組成一個數(shù)組)
$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;
}
}
1.打開數(shù)據(jù)庫備份頁面
//php代碼,導出數(shù)據(jù)庫
public function exportSql() {
$dbName = C('DB_NAME'); //讀取配置文件中的數(shù)據(jù)庫用戶名、密碼、數(shù)據(jù)庫名
$dbUser = C('DB_USER');
$dbPwd = C('DB_PWD');
$fileName = date("Y-m-d")."_".$dbName.".sql";
$dumpFileName = "./sql_backup/".$fileName;
exec("D:/xampp/mysql/bin/mysqldump -u$dbUser -p$dbPwd $dbName $dumpFileName");
}
2.php exec函數(shù),執(zhí)行外部程序命令
exec(“D:/xampp/mysql/bin/mysqldump -u$dbUser -p$dbPwd $dbName $dumpFileName”);
此處執(zhí)行mysqldump命令,導出數(shù)據(jù)庫到$dumpFileName中,“D:/xampp/mysql/bin/”為mysqldump所在位置,“-u$dbUser -p$dbPwd”數(shù)據(jù)庫的用戶名和密碼(中間不要加空格),$dbName為要導出數(shù)據(jù)庫的名字
$msgs[]="服務器備份目錄為backup";
$msgs[]="對于較大的數(shù)據(jù)表,強烈建議使用分卷備份";
$msgs[]="只有選擇備份到服務器,才能使用分卷備份功能";
show_msg($msgs);