分享
 
 
 

关于如何备份数据库(Mysql)的简易程序

王朝mysql·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

在公司(网络)的服务器上有很多网站,我上传网站时对其他瓦干也有同样的权限。所以就想把同事的网站荡下来学习一下。有了源代码,没有数据库什么也运行不了啊。服务器的数据库是安网站开的,每一个网站把*.sql发给服务器管理员,由管理员导入到数据库中。但是数据库账号密码不能登陆只能执行sql语句。所以我就想起来做一个简易的,类似于phpmyadmin的数据库导出功能。这样我就可以轻松的获得所有网站的数据库了。

用这个程序可以实现简单的数据导出(生成的脚本可直接在phpmyadmin执行)。进一步的功能还可以慢慢扩展。当然不要用来盗用别人机密的冬冬了。

其中解析的数据类型还不全,只是集中简单的常用类型。如果那位仁兄,发现了其他不适用的类型,请告诉我mailto:woaini4651@yahoo.com.cn。

index.php

<html

<head

<meta http-equiv="Content-Type" content="text/html; charset=gb2312"

<title数据库备份</title

<style type="text/css"

.borderoff{ border-style:none; background-color:#F3F3F3}

</style

</head

<body

<table width="100%" border="0" cellspacing="1" cellpadding="0" align="center"

<tr valign="top"

<td height="378"<br

<form action="cmd.php" method="post" name="backup" target="_blank" id="backup"

<table width="500" border="0" cellspacing="1" cellpadding="4" align="center"

<tr

<td colspan="2" align="center"数据库备份</td

</tr

<tr bgcolor="#F3F3F3"

<td width="166" align="right" 服务器名:</td

<td width="313"<input name="hostname" type="text" class="borderoff" value="localhost" size="35" maxlength="50"

</td

</tr

<tr bgcolor="#F3F3F3"

<td width="166" align="right" 数据库名:</td

<td width="313"<input name="database" type="text" class="borderoff" value="yes_da" size="35" maxlength="50"

</td

</tr

<tr bgcolor="#F3F3F3"

<td width="166" align="right"账号:</td

<td width="313"<input name="username" type="text" class="borderoff" value="root" size="35" maxlength="50"

</td

</tr

<tr bgcolor="#F3F3F3"

<td width="166" align="right"密码:</td

<td width="313"<input name="password" type="text" class="borderoff" size="35" maxlength="50"

</td

</tr

<tr bgcolor="#F3F3F3"

<td width="166" align="right" 完全备份:</td

<td width="313"

<input type="radio" name="backup_type" value="full" checked

</td

</tr

<tr bgcolor="#F3F3F3"

<td width="166" align="right"只备份结构:</td

<td width="313"

<input type="radio" name="backup_type" value="structure"

</td

</tr

<tr bgcolor="#F3F3F3"

<td width="166" align="right"只备份数据:</td

<td width="313"

<input type="radio" name="backup_type" value="data"

</td

</tr

<tr bgcolor="#F3F3F3"

<td width="166" align="right"采用压缩格式:</td

<td width="313"

<input type="radio" name="gzipcompress" value="0" checked

<input type="radio" name="gzipcompress" value="1"

是(zip)</td

</tr

<tr

<td colspan="2" align="center"

<input name="backupstart" type="submit" value="开始备份"

</td

</tr

</table

</form

<p align="center" <br

<br

</p</td

</tr

</table

</body

</html

cmd.php

<?php

if(isset($_POST['backupstart']))

{

$hostname = trim($_POST['hostname']);

$database = trim($_POST['database']);

$username = trim($_POST['username']);

$password = trim($_POST['password']);

$backtype = $_POST['backup_type'];

$gz

= $_POST['gzipcompress'];

$link = @mysql_pconnect($hostname, $username, $password);

if(!$link)

{

//连接数据库

echo "数据库打开出错!";

exit();

}//end if

$table_list = get_table_list($link,$database);

if($table_name===false)

{

//检索数据库的表

echo "数据库打开出错!!";

exit();

}//end if

//echo "<pre";

//print_r($table_list);

$table_code = "";

while(list($key,$table_name)=each($table_list))

{

//执行对每一个表的数据返回

if($backtype!="data")

{

//备份结构

$table_code .= get_table_code($link,$database,$table_name);

}//end if

if($backtype!="structure")

{

//备份数据

$table_code .= get_table_data($link,$database,$table_name);

}//end if

}//end while

//echo $table_code;

if($gz==0)

{

//输出

$filename = $database.".sql";

$handle = fopen($filename, "a+");

$temp = fwrite($handle, $table_code);

echo $temp;

fclose($handle);

//header("location:",$filename);

echo "<scriptlocation.replace('".$filename."');</script";

}elseif($gz==1){

$filename = $database.".zip";

$fp = gzopen($filename, "w9");

gzwrite($fp,$table_code);

gzclose($fp);

//header("location:",$filename);

echo "<scriptlocation.replace('".$filename."');</script";

}//end if

}else{

echo "连接错误!!!";

exit();

}//end if

//*****************************************************************

//函数名:get_table_list

//功能:返回指定数据库中的所有表名

//参数:$link

是数据库连接

//

$database

数据库名

//时间:2004年3月23日

//作者:野马

//QQ:46163020

//Email:woaini4651@yahoo.com.cn

//*****************************************************************

function get_table_list($link,$database)

{

$result = @mysql_list_tables($database);

if(!$result)

{//判断打开是否出错

return false;

}//end if

while($row = mysql_fetch_row($result))

{

$table_name[] = $row[0];

}//end while

mysql_free_result($result);

return $table_name;

}//end function

//*****************************************************************

//函数名:get_table_code

//功能:返回指定数据库中表的结构,用于创建指定表的SQL语句

//参数:$link

是数据库连接

//

$database

数据库名

//

$table_name表名

//时间:2004年3月23日

//作者:野马

//QQ:46163020

//Email:woaini4651@yahoo.com.cn

//*****************************************************************

function get_table_code($link,$database,$table_name)

{

mysql_select_db($database, $link);

$result = mysql_query("select * from ".$table_name, $link);

$return_str = "CREATE TABLE `".$table_name."` (nt";

$fields_num = (int)mysql_num_fields($result);

$fun_my['string'] = "varchar";

$fun_my['datetime'] = "datetime";

$fun_my['blob'] = "text";

$fun_my['real'] = "float";

echo "<br";

for($i=0; $i < $fields_num; $i++)

{

$return_str .= "`".mysql_field_name($result, $i)."` ";

$type = mysql_field_type($result, $i);

if(isset($fun_my[$type]))

{

//解析数据类型

if($fun_my[$type]=="datetime" || $fun_my[$type]=="text")

{

$return_str .= $fun_my[$type]." ";

}else{

$return_str .= $fun_my[$type]."(".mysql_field_len($result, $i).") ";

}//end if

}else{

$return_str .= $type."(".mys

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有