萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php將mysql數據庫整庫導出生成sql文件的詳細代碼

php將mysql數據庫整庫導出生成sql文件的詳細代碼

 下面是php將mysql數據庫整庫導出生成sql文件的詳細代碼,希望對大家在用php編程時備份數據有一定幫助

由網上搜到,有更改。    文件名:db_backup.php    源代碼如下:   代碼如下: <?php  ini_set("max_execution_time", "180");//避免數據量過大,導出不全的情況出現。    /*    程序功能:mysql數據庫備份功能  作者:唐小剛  說明:  本程序主要是從mysqladmin中提取出來,並作出一定的調整,希望對大家在用php編程時備份數據有一定幫助.  如果不要備份結構:請屏掉這句:echo get_table_structure($dbname, $table, $crlf).";$crlf$crlf";  如果不要備份內容:請屏掉這句:echo get_table_content($dbname, $table, $crlf);    修改者:何錦盛  修改時間:2009/11/7  修改內容:新增函數get_table_structure,注釋掉了函數get_table_def,目的是獲得更豐富的建表時的細節(如:ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='商品信息變更信息')  */    $host="";//數據庫地址    $dbname="";//這裡配置數據庫名    $username="";//用戶名    $passw="";//這裡配置密碼    $filename=date("Y-m-d_H-i-s")."-".$dbname.".sql";  header("Content-disposition:filename=".$filename);//所保存的文件名  header("Content-type:application/octetstream");  header("Pragma:no-cache");  header("Expires:0");    //備份數據  $i = 0;  $crlf="rn";  global $dbconn;  $dbconn = mysql_connect($host,$username,$passw]);//數據庫主機,用戶名,密碼  $db = mysql_select_db($dbname,$dbconn);  mysql_query("SET NAMES 'utf8'");  $tables =mysql_list_tables($dbname,$dbconn);  $num_tables = @mysql_numrows($tables);  print "-- filename=".$filename;  while($i < $num_tables)  {  $table=mysql_tablename($tables,$i);  print $crlf;  echo get_table_structure($dbname, $table, $crlf).";$crlf$crlf";  //echo get_table_def($dbname, $table, $crlf).";$crlf$crlf";  echo get_table_content($dbname, $table, $crlf);  $i++;  }    /*新增的獲得詳細表結構*/  function get_table_structure($db,$table,$crlf)  {  global $drop;    $schema_create = "";  if(!empty($drop)){ $schema_create .= "DROP TABLE IF EXISTS `$table`;$crlf";}  $result =mysql_db_query($db, "SHOW CREATE TABLE $table");  $row=mysql_fetch_array($result);  $schema_create .= $crlf."-- ".$row[0].$crlf;  $schema_create .= $row[1].$crlf;  Return $schema_create;  }    /*  //原來別人的取得數據庫結構,但不完整  function get_table_def($db,$table,$crlf)  {  global $drop;    $schema_create = "";  if(!empty($drop))  $schema_create .= "DROP TABLE IF EXISTS `$table`;$crlf";    $schema_create .= "CREATE TABLE `$table` ($crlf";  $result = mysql_db_query($db, "SHOW full FIELDS FROM $table");  while($row = mysql_fetch_array($result))  {  $schema_create .= " `$row[Field]` $row[Type]";    if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))  $schema_create .= " DEFAULT '$row[Default]'";  if($row["Null"] != "YES")  $schema_create .= " NOT NULL";  if($row["Extra"] != "")  $schema_create .= " $row[Extra]";  if($row["Comment"] != "")  $schema_create .= " Comment '$row[Comment]'";  $schema_create .= ",$crlf";  }  $schema_create = ereg_replace(",".$crlf."$", "", $schema_create);  $result = mysql_db_query($db, "SHOW KEYS FROM $table");  while($row = mysql_fetch_array($result))  {  $kname=$row['Key_name'];  if(($kname != "PRIMARY") && ($row['Non_unique'] == 0))  $kname="UNIQUE|$kname";  if(!isset($index[$kname]))  $index[$kname] = array();  $index[$kname][] = $row['Column_name'];  }    while(list($x,$columns) = @each($index))  {  $schema_create .= ",$crlf";  if($x == "PRIMARY")  $schema_create .= " PRIMARY KEY (".implode($columns,", ") . ")";  elseif (substr($x,0,6) == "UNIQUE")  $schema_create .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";  else  $schema_create .= " KEY $x (" . implode($columns, ", ") . ")";  }    $schema_create .= "$crlf)";  return (stripslashes($schema_create));  }  */    //獲得表內容  function get_table_content($db, $table, $crlf)  {  $schema_create = "";  $temp = "";  $result = mysql_db_query($db, "SELECT * FROM $table");  $i = 0;  while($row = mysql_fetch_row($result))  {  $schema_insert = "INSERT INTO `$table` VALUES (";  for($j=0; $j<mysql_num_fields($result);$j++)  {  if(!isset($row[$j]))  $schema_insert .= " NULL,";  elseif($row[$j] != "")  $schema_insert .= " '".addslashes($row[$j])."',";  else  $schema_insert .= " '',";  }  $schema_insert = ereg_replace(",$", "",$schema_insert);  $schema_insert .= ");$crlf";  $temp = $temp.$schema_insert ;  $i++;  }  return $temp;  }  ?>   
copyright © 萬盛學電腦網 all rights reserved