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


Posted in PHP onJanuary 08, 2014

由网上搜到,有更改。

文件名: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 相关文章推荐
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
php计算当前程序执行时间示例
Apr 24 PHP
php 魔术方法详解
Nov 11 PHP
php冒泡排序与快速排序实例详解
Dec 07 PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 PHP
PHP实现小偷程序实例
Oct 31 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
PHP数据库操作四:mongodb用法分析
Aug 16 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 PHP
PHP校验15位和18位身份证号的类封装
Nov 07 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 PHP
PHP修改session_id示例代码
Jan 08 #PHP
让PHP显示Facebook的粉丝数量方法
Jan 08 #PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 #PHP
php获取从百度搜索进入网站的关键词的详细代码
Jan 08 #PHP
PHP IE中下载附件问题解决方法
Jan 07 #PHP
迅速确定php多维数组的深度的方法
Jan 07 #PHP
ini_set的用法介绍
Jan 07 #PHP
You might like
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
Python制作钉钉加密/解密工具
2016/12/07 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
Python AES加密模块用法分析
2017/05/22 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
幼儿园中秋节活动方案
2014/02/06 职场文书
企业精神口号
2014/06/11 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
财会专业大学生求职信
2014/09/26 职场文书
走群众路线学习笔记
2014/11/06 职场文书
老乡聚会通知
2015/04/23 职场文书
协议书格式模板
2016/03/24 职场文书
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技