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

前端之家收集整理的这篇文章主要介绍了php将mysql数据库整库导出生成sql文件的具体实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

由网上搜到,有更改。 文件名:db_backup.PHP代码如下:
<div class="codetitle"><a style="CURSOR: pointer" data="18629" class="copybut" id="copybut18629" onclick="doCopy('code18629')"> 代码如下:

<div class="codebody" id="code18629">
<?PHP
ini_set("max_execution_time","180");//避免数据量过大,导出不全的情况出现。 / 程序功能MysqL数据库备份功能
作者:唐小刚
说明:
本程序主要是从MysqLadmin中提取出来,并作出一定的调整,希望对大家在用PHP编程时备份数据有一定帮助.
如果不要备份结构:请屏掉这句:echo get_table_structure($dbname,$table,$crlf).";$crlf$crlf";
如果不要备份内容:请屏掉这句:echo get_table_content($dbname,$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="\r\n";
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,$crlf).";$crlf$crlf";
//echo get_table_def($dbname,$crlf).";$crlf$crlf";
echo get_table_content($dbname,$crlf);
$i++;
} /新增的获得详细表结构/
function get_table_structure($db,$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,$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,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,$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;
}
?>

猜你在找的PHP相关文章