Two PHP database backup program codes_PHP tutorial
WBOY
Release: 2016-07-13 17:06:12
Original
1181 people have browsed it
Xiaosheng collected two PHP database backup programs today. The functions that can be completed here are: 1. Back up the specified data table, 2. Package into a zip file, 3. Send to the specified email address, that’s all the basic functions
class Backup
{
/**
* @var is used to save configuration parameters */
var $config;
/**
* @var used to save mysql dump data */
var $dump;
/**
* @var is used for database result data and insert instructions */
var $struktur = array();
/**
* @var compressed file name zip */
var $datei;
/**
* Structural function
* Connect to database
* @return */
public function Backup($options)
{
//Read configuration from formal parameters
foreach($options AS $name => $value)
{
$this->config[$name] = $value;
}
// Connect to database
mysql_connect($this->config['mysql'][0], $this->config['mysql'][1],
$this->config['mysql'][2]) or die(mysql_error());
mysql_select_db($this->config['mysql'][3]) or die(mysql_error());
}
/**
* Function to execute backup database process
* @return */
public function backupDB()
{
//Command to start backup
if(isset($_POST['backup']))
{
// Check whether the data table is selected
if(empty($_POST['table']))
{
die("Please select a data table.");
}
// Lock the database that needs to be backed up to prevent dirty data from being read
foreach($_POST['table'] AS $table)
{
mysql_query("LOCK TABLE $table WRITE");
// Get the database structure
$res = mysql_query('SHOW CREATE TABLE '.$table.'');
$createtable = mysql_result($res, 0, 1);
$str = "nn".$createtable."nn";
array_push($tables, $str);
// Query all data rows in the data table
$sql = 'SELECT * FROM '.$table;
$query = mysql_query($sql) or die(mysql_error());
$feld_anzahl = mysql_num_fields($query);
$sql_statement = '--
-- Data Table `$table`
--
';
// Start reading data and convert it into insert command
while($ds = mysql_fetch_object($query)){
$sql_statement .= 'INSERT INTO `'.$table.'` (';
for ($i = 0;$i <$feld_anzahl;$i++){
if ($i ==$feld_anzahl-1){
$sql_statement .= mysql_field_name($query,$i);
} else {
$sql_statement .= mysql_field_name($query,$i).', ';
}
}
//Put the insert data in the array and remove duplicates
if(!in_array($sql_statement, $insert))
{
array_push($insert, $sql_statement);
unset($sql_statement);
}
unset($sql_statement);
}
// Put the database structure and insert command together
$this->struktur = array_combine($tables, $insert);
//Execute dump function
$this->createDUMP($this->struktur);
// Generate zip archive
$this->createZIP();
/**End of backup **/
//Send an email to the specified email address. The attachment contains the sql backup, if you have set it up^_^
if(isset($this->config['email']) && !empty($this->config['email']))
{
$this->sendEmail();
}
/**
* Create a compressed package of database backup and save it to the specified directory on the server
* @return */
protected function createZIP()
{
// Folder permissions must be sufficient
chmod($this->config['folder'], 0777);
// Create compressed package
$zip = new ZipArchive();
//Set the compressed package file name
$this->datei = $this->config['folder'].$this->config['mysql'][3]."_"
.date("j_F_Y_g_i_a").".zip";
// See if the compressed package can be opened
if ($zip->open($this->datei, ZIPARCHIVE::CREATE)!==TRUE) {
exit("Cannot open <".$this->datei.">n");
}
//Put the dumped data into the compressed package
$zip->addFromString("dump.sql", $this->dump);
// Close the compressed package
$zip->close();
// Check to see if the compressed package has been generated
if(!file_exists($this->datei))
{
die("Unable to generate compressed package");
}
/**
* Generate interface function for selecting data table
* @return */
public function outputForm()
{
// Select all
$result = mysql_list_tables($this->config['mysql'][3]);
$buffer = '
';
echo $buffer;
}
}
?>
General database backup class
The code is as follows
代码如下
复制代码
/*数据库备份:NOTICE:此类要添加数据库连接才能正常工作*/
Class Back_up_databaseextendsdbstuff{
//类开始
var $HOST;
var $USERNAME;
var $PASSWORD;
var $DATABASE;
function Back_up_database($host,$username,$password,$database){
//初始化数据库连接
$this->HOST=$host;
$this->USERNAME=$username;
$this->ASSWORD=$password;
$this->DATABASE=$database;
$Connection=$this->connect($this->HOST,$this->USERNAME,$this->ASSWORD,$this->DATABASE,$pconnect);
$this->Connection=$Connection;
}
//取得数据库中的表
function get_table_name($database){
$this->Connection;
$result=mysql_list_tables($database);
$i=0;
while($i
$tb_name[$i]=mysql_tablename($result,$i);
$table_name.=$tb_name[$i].",";
$i++;
}
$this->table_name=substr($table_name,0,-1);
return$this->table_name;
}
//取得每个表中的FIELDS和属性并生成CREATETABLE语句
function get_table_fields($table_name){
$this->Connection;
$createtable=dbstuff::query("SHOWCREATETABLE$table_name");
$create=dbstuff::fetch_row($createtable);
$tabledump.="DROPTABLEIFEXISTS$table_name;n";
$tabledump.=$create[1].";nn";
$this->$table_name=$tabledump;
return$this->$table_name;
}
//取得表中的数据并生成ISERTINTO语句
function get_insert($table_insert_name){
$this->Connection;
$rows=dbstuff::query("SELECT*FROM$table_insert_name");
$numfields=dbstuff::num_fields($rows);
$numrows=dbstuff::num_rows($rows);
while($row=dbstuff::fetch_row($rows)){
$comma="";
$tabledump.="INSERTINTO$table_insert_nameVALUES(";
for($i=0;$i<$numfields;$i++){
$tabledump.=$comma."'".mysql_escape_string($row[$i])."'";
$comma=",";
}
$tabledump.=");n";
}
$this->tabledump=$tabledump;
return$this->tabledump;
}
//获取所有数据并连接成新的字符串并将它写入文件中.sql
function get_string($database_name,$file_path_name){
$time=date("Y-m-dH:j");
$date_time=date("YmdHis");
$file_path_name=$file_path_name.$date_time.".sql";
$version="Antsent_Web_StudioDatabaseBackUpV1.01";
$idstring='#Identify:'.base64_encode("$time,$version")."n";
$head_info="$idstring".
"#n".
"#Antsnet_Web!TheBasicClassOfBackUpDataBasen".
"#Version:AntsnetWeb!$versionn".
"#Timetimen".
"#Type:ClassOfBackUpDataBasen".
"#Antsnet_Web_Studio!Home:http://www.bKjia.c0m n".
"#PleasevisitourwebsitefornewestinfomationaboutAntsnet_Web_Studio!n".
"#--------------------------------------------------------nnn";
$table_name=$this->get_table_name($database_name);
$array_table=explode(",",$table_name);
for($i=0;$i
$table_string.=$this->get_table_fields($array_table[$i]);
$table_insert.=$this->get_insert($array_table[$i]);
}
$count_string=$head_info.$table_string.$table_insert;
//return$count_string;
$write_status=$this->write_file($file_path_name,$count_string);
return$write_status;
}
//写入一个文件
function write_file($file_path,$file_contents){
if(@!$fp=fopen($file_path,'w')){
$status="ThisFileCouldNotOpenOrRead.";
}else{
flock($fp,3);
fwrite($fp,$file_contents);
fclose($fp);
window.google_render_ad();
?>
Copy code
/*Database backup: NOTICE: This type needs to add a database connection to work properly*/<🎜>
Class Back_up_databaseextendsdbstuff{<🎜>
//Class start<🎜>
var $HOST;<🎜>
var $USERNAME;<🎜>
var $PASSWORD;<🎜>
var $DATABASE;<🎜>
function Back_up_database($host,$username,$password,$database){<🎜>
//Initialize database connection<🎜>
$this->HOST=$host;
$this->USERNAME=$username;
$this->ASSWORD=$password;
$this->DATABASE=$database;
$Connection=$this->connect($this->HOST,$this->USERNAME,$this->ASSWORD,$this->DATABASE,$pconnect);
$this->Connection=$Connection;
}
//Get the table in the database
function get_table_name($database){
$this->Connection;
$result=mysql_list_tables($database);
$i=0;
while($i
$tb_name[$i]=mysql_tablename($result,$i);<🎜>
$table_name.=$tb_name[$i].",";<🎜>
$i++;<🎜>
}<🎜>
$this->table_name=substr($table_name,0,-1);
return$this->table_name;
}
//Get the FIELDS and attributes in each table and generate a CREATETABLE statement
function get_table_fields($table_name){
$this->Connection;
$createtable=dbstuff::query("SHOWCREATETABLE$table_name");
$create=dbstuff::fetch_row($createtable);
$tabledump.="DROPTABLEIFEXISTS$table_name;n";
$tabledump.=$create[1].";nn";
$this->$table_name=$tabledump;
return$this->$table_name;
}
//Get the data in the table and generate the ISERTINTO statement
function get_insert($table_insert_name){
$this->Connection;
$rows=dbstuff::query("SELECT*FROM$table_insert_name");
$numfields=dbstuff::num_fields($rows);
$numrows=dbstuff::num_rows($rows);
while($row=dbstuff::fetch_row($rows)){
$comma="";
$tabledump.="INSERTINTO$table_insert_nameVALUES(";
for($i=0;$i<$numfields;$i++){<🎜>
$tabledump.=$comma."'".mysql_escape_string($row[$i])."'";<🎜>
$comma=",";<🎜>
}<🎜>
$tabledump.=");n";<🎜>
}<🎜>
$this->tabledump=$tabledump;
return$this->tabledump;
}
//Get all the data and concatenate it into a new string and write it to the file.sql
function get_string($database_name,$file_path_name){
$time=date("Y-m-dH:j");
$date_time=date("YmdHis");
$file_path_name=$file_path_name.$date_time.".sql";
$version="Antsent_Web_StudioDatabaseBackUpV1.01";
$idstring='#Identify:'.base64_encode("$time,$version")."n";
$head_info="$idstring".
"#n".
"#Antsnet_Web!TheBasicClassOfBackUpDataBasen".
"#Version:AntsnetWeb!$versionn".
"#Timetimen".
"#Type:ClassOfBackUpDataBasen".
"#Antsnet_Web_Studio!Home:http://www.bKjia.c0m n".
"#PleasevisitourwebsitefornewestinfomationaboutAntsnet_Web_Studio!n".
"#------------------------------------------------ --------nnn";
$table_name=$this->get_table_name($database_name);
$array_table=explode(",",$table_name);
for($i=0;$i
$table_string.=$this->get_table_fields($array_table[$i]);
$table_insert.=$this->get_insert($array_table[$i]);
}
$count_string=$head_info.$table_string.$table_insert;
//return$count_string;
$write_status=$this->write_file($file_path_name,$count_string);
return$write_status;
}
//Write a file
function write_file($file_path,$file_contents){
if(@!$fp=fopen($file_path,'w')){
$status="ThisFileCouldNotOpenOrRead.";
}else{
flock($fp,3);
fwrite($fp,$file_contents);
fclose($fp);
window.google_render_ad();
?>
http://www.bkjia.com/PHPjc/630701.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/630701.htmlTechArticleXiaosheng collected two PHP database backup programs today. The functions that can be completed here are: 1. Back up the specified data table , 2. Package into a zip file, 3. Send to the specified email address, the basic function is this...
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn