PHP備份數據庫為SQL文件

ypp5 10年前發布 | 2K 次閱讀 PHP

這是一個將指定數據庫里的所有表備份為一個SQL文件,可下載。

<!?php

/** 備份數據庫結構 **/

  /* 
  函數名稱:table2sql() 
  函數功能:把表的結構轉換成為SQL 
  函數參數:$table: 要進行提取的表名 
  返 回 值:返回提取后的結果,SQL集合 
  函數作者:heiyeluren 
  */ 

 function table2sql($table)  
  {  
      global $db;  
     $tabledump = "DROP TABLE IF EXISTS $table;\n";  
     $createtable = $db--->query("SHOW CREATE TABLE $table");  
     $create = $db->fetch_row($createtable);  
     $tabledump .= $create[1].";\n\n";  
      return $tabledump;  
  }  


 /****** 備份數據庫結構和所有數據 ******/ 
  /* 
  函數名稱:data2sql() 
  函數功能:把表的結構和數據轉換成為SQL 
  函數參數:$table: 要進行提取的表名 
  返 回 值:返回提取后的結果,SQL集合 
  函數作者:heiyeluren 
  */ 
 function data2sql($table)  
  {  
      global $db;  
     $tabledump = "DROP TABLE IF EXISTS $table;\n";  
     $createtable = $db->query("SHOW CREATE TABLE $table");  
     $create = $db->fetch_row($createtable);  
     $tabledump .= $create[1].";\n\n";  

     $rows = $db->query("SELECT * FROM $table");  
     $numfields = $db->num_fields($rows);  
     $numrows = $db->num_rows($rows);  
      while ($row = $db->fetch_row($rows))  
      {  
         $comma = "";  
         $tabledump .= "INSERT INTO $table VALUES(";  
          for($i = 0; $i < $numfields; $i++)  
          {  
             $tabledump .= $comma."'".mysql_escape_string($row[$i])."'";  
             $comma = ",";  
          }  
         $tabledump .= ");\n";  
      }  
     $tabledump .= "\n";  

      return $tabledump;  
  }  

?>

<!--?php
$host="localhost"; //主機名
$user="root"; //MYSQL用戶名
$password="root"; //密碼
$dbname="dedecmsv4"; //備份的數據庫

mysql_connect($host,$user,$password);
mysql_select_db($dbname);

$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'].";\r\n\r\n";#DDL

$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="&quot;.$keys.&quot;";
$vals=array_values($data);
$vals=array_map('addslashes',$vals);
$vals=join("','",$vals);
$vals="'".$vals."'";

$mysql.="insert into $table($keys) values($vals);\r\n";
}
$mysql.="\r\n";

}
$filename=date('Ymd')."_".$dbname.".sql"; //文件名為當天的日期
$fp = fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo "數據備份成功,生成備份文件".$filename;
?></pre>

 本文由用戶 ypp5 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!