zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

php将mysql数据库整库导出生成sql文件的具体实现

2023-06-13 09:15:15 时间
由网上搜到,有更改。

文件名:db_backup.php

源代码如下:
复制代码代码如下:

<?php
ini_set("max_execution_time","180");//避免数据量过大,导出不全的情况出现。

/*

程序功能:mysql数据库备份功能
作者:唐小刚
说明:
本程序主要是从mysqladmin中提取出来,并作出一定的调整,希望对大家在用php编程时备份数据有一定帮助.
如果不要备份结构:请屏掉这句:echoget_table_structure($dbname,$table,$crlf).";$crlf$crlf";
如果不要备份内容:请屏掉这句:echoget_table_content($dbname,$table,$crlf);

修改者:何锦盛
修改时间:2009/11/7
修改内容:新增函数get_table_structure,注释掉了函数get_table_def,目的是获得更丰富的建表时的细节(如:ENGINE=InnoDBAUTO_INCREMENT=80DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ciCOMMENT="商品信息变更信息")
*/

$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="\r\n";
global$dbconn;
$dbconn=mysql_connect($host,$username,$passw]);//数据库主机,用户名,密码
$db=mysql_select_db($dbname,$dbconn);
mysql_query("SETNAMES"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;
echoget_table_structure($dbname,$table,$crlf).";$crlf$crlf";
//echoget_table_def($dbname,$table,$crlf).";$crlf$crlf";
echoget_table_content($dbname,$table,$crlf);
$i++;
}

/*新增的获得详细表结构*/
functionget_table_structure($db,$table,$crlf)
{
global$drop;

$schema_create="";
if(!empty($drop)){$schema_create.="DROPTABLEIFEXISTS`$table`;$crlf";}
$result=mysql_db_query($db,"SHOWCREATETABLE$table");
$row=mysql_fetch_array($result);
$schema_create.=$crlf."--".$row[0].$crlf;
$schema_create.=$row[1].$crlf;
Return$schema_create;
}

/*
//原来别人的取得数据库结构,但不完整
functionget_table_def($db,$table,$crlf)
{
global$drop;

$schema_create="";
if(!empty($drop))
$schema_create.="DROPTABLEIFEXISTS`$table`;$crlf";

$schema_create.="CREATETABLE`$table`($crlf";
$result=mysql_db_query($db,"SHOWfullFIELDSFROM$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.="NOTNULL";
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,"SHOWKEYSFROM$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.="PRIMARYKEY(".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));
}
*/

//获得表内容
functionget_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="INSERTINTO`$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;
}
?>