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

2015-01-24信息快讯网

下面是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="\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, $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; 
} 
?> 
php防止伪造的数据从URL提交方法
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Thinkphp使用mongodb数据库实现多条件查询方法
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Thinkphp实现MySQL读写分离操作示例
PHP获取MySql新增记录ID值的3种方法
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
destoon会员注册提示“数据校验失败(2)”解决方法
destoon二次开发常用数据库操作
windows下配置apache+php+mysql时出现问题的处理方法
ThinkPHP3.1新特性之多数据库操作更加完善
新浪SAE云平台下使用codeigniter的数据库配置
利用phpexcel把excel导入数据库和数据库导出excel实现
PHP修改session_id示例代码
PHP中执行MYSQL事务解决数据写入不完整等情况
有关于PHP中常见数据类型的汇总分享
php curl模拟post提交数据示例
codeigniter使用技巧批量插入数据实例方法分享
php上传图片到指定位置路径保存到数据库的具体实现
PHP连接SQLServer2005方法及代码
输入值/表单提交参数过滤有效防止sql注入的方法
php防止sql注入代码实例
PHP数据库链接类(PDO+Access)实例分享
使用PHP备份MySQL和网站发送到邮箱实例代码
三种php连接access数据库方法
php操作mysqli(示例代码)
php批量更改数据库表前缀实现方法
PHP连接MySQL查询结果中文显示乱码解决方法
php中读写文件与读写数据库的效率比较分享
php mysql_real_escape_string函数用法与实例教程
©2014-2024 dbsqp.com