php備份類
功能上有:
require_once("backdata.class.php");
$link
=
@mysql_connect("localhost","資料庫名","密碼")
or
die
('Could
not
connect
to
server.');
mysql_query("use
cms",$link);
mysql_query("set
names
utf8",$link);
$dbbck=new
backupData($link);//實例化它,只要一個鏈接標識就行了
//備份數據時,如想備份一個資料庫中的所有表,你可這樣寫:
$dbbck->backupTables("cms","./",array('*'));
//備份數據時,如想備份一個資料庫中的僅一個表時,你可這樣寫:
$dbbck->backupTables("cms","./",array('user'));
//備份數據時,如想備份一個資料庫中的多個表時,你可這樣寫:
$dbbck->backupTables("cms","./",array('user','acl','informatoin'));
//註解:$dbbck->backupTables("參1","參2",array());中,
參1為:資料庫名,
參2為:要存放備份數據的位置(即目錄地址)
第三個為:你要保存那些表
ok...
以下為代碼:
復制代碼
代碼如下:
<?php
/*
*
*簡單的一個備份數據類
*author
FC
*
*/
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;
}
//************************以下是形成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的後半部分**************
//查尋出表中的所有數據
$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.=");\n\n\n";
}
}
$backfilepath=$this->dataDir.date("Ymdhis",time()).'.sql';
//寫入文件
$filehandle
=
fopen($backfilepath,
"w");
fwrite($filehandle,
$sqls);
fclose($filehandle);
}
private
function
delarray($array){//處理傳入進來的數組
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;
}
}
㈡ php 網站只要備份資料庫就可以嗎
備份資料庫的數據就可以了。
備份的方法:
1、本地備份-適用於獨立主機或VPS:使用本機程序對網站文件及資料庫進行備份。
2、異地備份-適用於虛擬主機/空間:使用FTP程序將文件下載回本機備份,資料庫使用本機的資料庫管理程序進行遠程備份。
備份的類型:
1、完整備份-所整個網站的文件都備份一次。優點:可以把整個網站都完整備份一次。缺點:費時費資源。
2、差異備份-只備份有改變的文件。優點:每次只把有改變過的文件備份下來。相同的文件就不會再備份一次了,省時省力。
㈢ 請問如何用php寫一個類,備份所有的資料庫呢
主要是個mysql mp操作,將資料庫的數據完整導入到txt或者其他文件中就可以的,和php的類相關很小啊,就是函數和mysql操作寫對了就好
㈣ 如何用php進行數據備份
1、如果伺服器允許mysqlmp 並且沒有禁止PHP的shell_exec()這個函數的話
直接在PHP裡面執行mysqlmp就可以了。
2、通過mysql_query('show tables')的返回值遍歷每個表,循環對每個表使用查詢語句
select * into outfile '路徑/文件名' from 表名
缺點是這樣得到的是純數據,恢復數據的時候你需要額外再寫腳本
3、同樣通過show tables返回表名,遍歷每個表,通過select 語句查詢,然後逐條結果處理,比如手工添加drop table 和create table 以及insert into等等,然後再寫入文件。這樣得到的備份數據是比較接近mysqlmp的結果的,各種工具都可以用來恢復數據。缺點是如果資料庫太大的話,效率不好說
㈤ 如何實現PHP自動備份資料庫
1.打開資料庫備份頁面
//php代碼,導出資料庫
public function exportSql() {
$dbName = C('DB_NAME'); //讀取配置文件中的資料庫用戶名、密碼、資料庫名
$dbUser = C('DB_USER');
$dbPwd = C('DB_PWD');
$fileName = date("Y-m-d")."_".$dbName.".sql";
$mpFileName = "./sql_backup/".$fileName;
exec("D:/xampp/mysql/bin/mysqlmp -u$dbUser -p$dbPwd $dbName > $mpFileName");
}
2.php exec函數,執行外部程序命令
exec(「D:/xampp/mysql/bin/mysqlmp -u$dbUser -p$dbPwd $dbName > $mpFileName」);
此處執行mysqlmp命令,導出資料庫到$mpFileName中,「D:/xampp/mysql/bin/」為mysqlmp所在位置,「-u$dbUser -p$dbPwd」資料庫的用戶名和密碼(中間不要加空格),$dbName為要導出資料庫的名字
㈥ 如何用PHP來實現MySQL備份
備份資料庫並下載到本地【db_backup.php】
<?php
//設置SQL文件保存文件名
$filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
//所保存的文件名
header("Content-disposition:filename=".$filename);
header("Content-type:application/octetstream");
header("Pragma:no-cache");
header("Expires:0");
//獲取當前頁面文件路徑,SQL文件就導出到此文件夾內
$tmpFile=(dirname(__FILE__))."\".$filename;
//用MySQLDump命令導出資料庫
exec("mysqlmp-u$cfg_dbuser-p$cfg_dbpwd--default-character-set=utf8$cfg_dbname>".$tmpFile);
$file=fopen($tmpFile,"r");//打開文件
echofread($file,filesize($tmpFile));
fclose($file);
exit;
?>
㈦ 如何使用PHP自動備份資料庫
使用mysqlmp函數
mysqlmp -u username -p dbname table1 table2 ... > BackupName.sql
dbname參數表示資料庫的名稱
table1和table2參數表示需要備份的表的名稱,為空則整個資料庫備份;
BackupName.sql參數表設計備份文件的名稱,文件名前面可以加上一個絕對路徑。通常將資料庫被分成一個後綴名為sql的文件。
備份資料庫的主要過程:
切換到對應的資料庫;
使用show create table tableName,獲得表結構,寫到文件中;
然後查詢所有的表數據,循環生成相對應sql語句,寫到文件中;
試運行生成的sql文件。
㈧ php備份恢復MYSQL資料庫
1、把資料庫sql文件查找 CHARACTER
替換成 CHARACTER SET utf8 或 CHARACTER = utf8
2、到phpmyadmin 創建一個新的資料庫的時候應該選 整理 latin1_swedish_ci
3、到phpmyadmin 進入新建的資料庫,導入資料庫文件
4、用UltraEdit轉換所有ANSI格式的php源碼文件為UTF-8格式:File --> Conversions --> ASCII to UTF-8
5、在php源碼文件中必須加入:
在<head>後加入
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6、在連接數據DB的文件中找到類似一下代碼
$host="localhost"; $DBname="aa"; //資料庫名字$user= "root"; //用戶名$passwd = ""; //密碼$link = mysql_connect($host,$user,$passwd) or die ("Fail");
$db = mysql_select_db($DBname, $link) or die ("Fail"); //連接
// 要在真正query DB取出資料前,必須加入下面3行mysql_query才可以:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");
7、在php源碼中, 如有應用htmlentities和htmlspecialchars時需要注意:
要似如下格式:
$chars = htmlentities($chars,ENT_QUOTES,"UTF-8");
$chars = htmlspecialchars($chars,ENT_QUOTES,"UTF-8");
如有應用addslashes()或mysql_real_escape_string()記得用以下:
$chars = stripslashes($chars);
另外如果需要的話還可設置:
1、php.ini 設定php中的語系為 (記得restart)
default_charset = "utf-8"
2、my.ini 設定MySQL中的語系為 (記得restart)
[mysqld]
init_connect='SET NAMES utf8'
default-character-set=utf8
[client]
default-character-set = utf8
本人剛接觸PHP+MySQL,才疏學淺,希望能給有需要的得到幫助。
請大家指點,謝謝!