Generally, we use tools for backup, such as phpmyadmin and navicat. If you need to use PHP backup, how can we implement it? The following two methods are provided for research purposes only.
1st methods:
The Code is as follows:
$ Host = "localhost ";
$ User = "root ";
$ Password = "";
$ Dbname = "dbname ";
Mysql_connect ($ host, $ user, $ password );
Mysql_select_db ($ dbname );
$ Mysql = "set names utf8 ;";
Mysql_query ($ mysql );
$ Q1 = mysql_query ("show tables ");
While ($ t = mysql_fetch_array ($ q1 )){
$ Table = $ t [0];
$ Q2 = mysql_query ("show create table '$ table '");
$ SQL = mysql_fetch_array ($ q2 );
$ Mysql. = $ SQL ['create table']. "; \ n ";
$ Q3 = mysql_query ("select * from '$ table '");
While ($ data = mysql_fetch_assoc ($ q3 )){
$ Keys = array_keys ($ data );
$ Keys = array_map ('addslashes', $ keys );
$ Keys = join ('','', $ keys );
$ Keys = "'". $ keys ."'";
$ Vals = array_values ($ data );
$ Vals = array_map ('addslashes', $ vals );
$ Vals = join ("','", $ vals );
$ Vals = "'". $ vals ."'";
$ Mysql. = "insert into '$ table' ($ keys) values ($ vals); \ n ";
}
$ Mysql. = "\ n ";
}
$ Filename = $ dbname. date ('ymj '). ". SQL ";
$ Fp = fopen ($ filename, 'w ');
Fputs ($ fp, $ mysql );
Fclose ($ fp );
Echo "Data Backup successful, backup file generated". $ filename;
?>
2nd methods:
The Code is as follows:
$ Host = "localhost ";
$ User = "root ";
$ Password = "";
$ Dbname = "dbname ";
Backup_tables ($ host, $ user, $ password, $ dbname );
/* Backup the db OR just a table */
Function backup_tables ($ host, $ user, $ pass, $ name, $ tables = '*')
{
$ Link = mysql_connect ($ host, $ user, $ pass );
Mysql_select_db ($ name, $ link );
// Get all of the tables
If ($ tables = '*')
{
$ Tables = array ();
$ Result = mysql_query ('show TABLES ');
While ($ row = mysql_fetch_row ($ result ))
{
$ Tables [] = $ row [0];
}
}
Else
{
$ Tables = is_array ($ tables )? $ Tables: explode (',', $ tables );
}
$ Return = '';
// Cycle through
Foreach ($ tables as $ table)
{
$ Result = mysql_query ('select * FROM '. $ table );
$ Num_fields = mysql_num_fields ($ result );
$ Return. = 'drop Table'. $ TABLE .';';
$ Row2 = mysql_fetch_row (mysql_query ('show CREATE Table'. $ TABLE ));
$ Return. = "\ n". $ row2 [1]. "; \ n ";
For ($ I = 0; $ I <$ num_fields; $ I ++)
{
While ($ row = mysql_fetch_row ($ result ))
{
$ Return. = 'insert'. $ table. 'values (';
For ($ j = 0; $ j <$ num_fields; $ j ++)
{
$ Row [$ j] = addslashes ($ row [$ j]);
$ Row [$ j] = ereg_replace ("\ n", "\ n", $ row [$ j]);
If (isset ($ row [$ j]) {$ return. = '"'. $ row [$ j]. '"';} else {$ return. = '""';}
If ($ j <($ num_fields-1) {$ return. = ',';}
}
$ Return. = "); \ n ";
}
}
$ Return. = "\ n ";
}
// Save file
$ Handle = fopen ('db-backup -'. time (). '-'. (md5 (implode (',', $ tables ))). '. SQL ', 'W + ');
Fwrite ($ handle, $ return );
Fclose ($ handle );
}
?>