Home > Article > Backend Development > php mysql database backup and data restoration class_PHP tutorial
Explanation: This type is suitable for database backup of small websites. It has built-in MYSQL connection and only requires simple configuration of data connection. * and the location where the backup is stored. * After the class is instantiated and connected to the database, the following operations can be performed
php tutorial mysql tutorial database tutorial backup and data restoration class
/**
* Note, this type is suitable for database backup of small websites. It has built-in mysql connection and only needs to simply configure the data connection
* and the location where the backup is stored.
* After the class is instantiated and connected to the database, you can perform the following operations
* get_db_table($database) Get all data tables
* export_sql($table,$subsection=0)) Generate sql file. Note that the generated sql file is only saved to the server directory and is not available for download
* import_sql($dir) Restored data only imports sql files in the server directory
* This type is simple to make and can be spread at will. If you have any suggestions for this type, please send an email to Xiaoxia
* @author Zhao Hongjian[Youtian Xiaoxia]
* email:328742379@qq.com
* QQ communication group: 69574955 Juyitang-Webpage Production Exchange
*/
class data {
public $data_dir = "class/"; //The path where the backup file is stored
public $transfer =""; //Temporarily store sql [Do not assign a value to this attribute, otherwise an incorrect sql statement will be generated]/**
*Database connection
*@param string $host database host name
*@param string $user username
*@param string $pwd Password
*@param string $db Select database name
*@param string $charset encoding method
*/
function connect_db($host,$user,$pwd,$db,$charset='gbk'){
if(!$conn = mysql_connect($host,$user,$pwd)){
Return false;
}
mysql_select_db($db);
mysql_query("set names $charset");
return true;
}/**
* Generate sql statement
* @param $table The table to be backed up
* @return The sql statement generated by $tabledump
*/
public function set_sql($table,$subsection=0,&$tabledom=''){
$tabledom .= "drop table if exists $tablen";
$createtable = mysql_query("show create table $table");
$create = mysql_fetch_row($createtable);
$create[1] = str_replace("n","",$create[1]);
$create[1] = str_replace("t","",$create[1]);$tabledom .= $create[1].";n";
$rows = mysql_query("select * from $table");
$numfields = mysql_num_fields($rows);
$numrows = mysql_num_rows($rows);
$n = 1;
$sqlarry = array();
while ($row = mysql_fetch_row($rows)){
$comma = "";
$tabledom .= "insert into $table values(";
for($i = 0; $i < $numfields; $i++)
{
$tabledom .= $comma."'".mysql_escape_string($row[$i])."'";
$comma = ",";
}
$tabledom .= ")n";
If($subsection != 0 && strlen($this->transfer )>=$subsection*1000){
$sqlarry[$n]= $tabledom;
$tabledom = ''; $n++;
}
}
return $sqlarry;
}/**
*Table in list database
*@param database $database The name of the database to be operated
*@return array $dbarray The database table listed
*/
public function get_db_table($database){
$result = mysql_list_tables($database);
while($tmparry = mysql_fetch_row($result)){
$dbarry[] = $tmparry[0];
}
return $dbarry;
}/**
*Verify whether the directory is valid
*@param diretory $dir
*@return booln
*/
function check_write_dir($dir){
if(!is_dir($dir)) {@mkdir($dir, 0777);}
if(is_dir($dir)){
if($link = opendir($dir)){
$filearry = scandir($dir);
for($i=0;$iIf($filearry[$i]!='.' || $filearry != '..'){
@unlink($dir.$filearry[$i]);
}
}
}
}
return true;
}
/**
*Write data to file
*@param file $filename file name
*@param string $str Information to be written
*@return booln Returns true if the writing is successful, otherwise false
*/
private function write_sql($filename,$str){
$re= true;
if(!@$fp=fopen($filename,"w+")) {$re=false; echo "An error occurred while opening the file, backup failed!";}
if(!@fwrite($fp,$str)) {$re=false; echo "An error was encountered while writing information, backup failed!";}
if(!@fclose($fp)) {$re=false; echo "An error occurred while closing the file, backup failed!";}
return $re;
}/**
*Generate sql file
*@param string $sql sql Statement
*@param number $subsection subsection size, in kb, 0 means no subsection
*/
public function export_sql($table,$subsection=0){
if(!$this->check_write_dir($this->data_dir)){echo '您没有权限操作目录,备份失败';return false;}
if($subsection == 0){
if(!is_array($table)){
$this->set_sql($table,0,$this->transfer);
}else{
for($i=0;$i$this->set_sql($table[$i],0,$this->transfer);
}
}
$filename = $this->data_dir.date("ymd",time()).'_all.sql';
if(!$this->write_sql($filename,$this->transfer)){return false;}
}else{
if(!is_array($table)){
$sqlarry = $this->set_sql($table,$subsection,$this->transfer);
$sqlarry[] = $this->transfer;
}else{
$sqlarry = array();
for($i=0;$i$tmparry = $this->set_sql($table[$i],$subsection,$this->transfer);
$sqlarry = array_merge($sqlarry,$tmparry);
}
$sqlarry[] = $this->transfer;
}
for($i=0;$i$filename = $this->data_dir.date("ymd",time()).'_part'.$i.'.sql';
if(!$this->write_sql($filename,$sqlarry[$i])){return false;}
}
}
return true;
}
/**
*Load sql file
*@param diretory $dir
*@return booln
*Note: Please do not store other files under the directory, or directory
*To save recovery time
*/
public function import_sql($dir){
if($link = opendir($dir)){
$filearry = scandir($dir);
$pattern = "_part[0-9]+.sql$|_all.sql$";
for($i=0;$iif(eregi($pattern,$filearry[$i])){
$sqls=file($dir.$filearry[$i]);
foreach($sqls as $sql){
str_replace("r","",$sql);
str_replace("n","",$sql);
if(!mysql_query(trim($sql))) return false;
}
}
}
return true;
}
}}
应用方法
//$d = new data();
//连接数据库
//if(!$d->connect_db('localhost','root','','guestbook','gbk')){
// echo '数据库连接失败';
//}//查找数据库内所有数据表
//$tablearry = $d->get_db_table('guestbook');//备份并生成sql文件
//if(!$d->export_sql($tablearry)){
// echo '备份失败';
//}else{
// echo '备份成功';
//}//恢复导入sql文件夹
//if($d->import_sql($d->data_dir)){
// echo '恢复成功';
//}else{
// echo '恢复失败';
//}