分享
 
 
 

备份数据库(Mysql)的简易程序

王朝mysql·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在公司(网络)的服务器上有很多网站,我上传网站时对其他瓦干也有同样的权限。所以就想把同事的网站荡下来学习一下。有了源代码,没有数据库什么也运行不了啊。服务器的数据库是安网站开的,每一个网站把*.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">账&nbsp;&nbsp;&nbsp;&nbsp;号:</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">密&nbsp;&nbsp;&nbsp;&nbsp;码:</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 "<script>location.replace('".$filename."');</script>";

}elseif($gz==1){

$filename = $database.".zip";

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

gzwrite($fp,$table_code);

gzclose($fp);

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

echo "<script>location.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."` (\n\t";

$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."(".mysql_field_len($result, $i).") ";

}//end if

if($i==0)

{ //

$return_str .= "NOT NULL auto_increment ";

}else{

$return_str .= mysql_field_flags($result, $i)=="not_null"?"NOT NULL ":"default NULL ";

}//end if

$return_str .= ",\n\t";

}//end for

$return_str .= "PRIMARY KEY (`id`)\n)TYPE=MyISAM AUTO_INCREMENT=30;\n\n";

return $return_str;

}//end function

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

//函数名:get_table_data

//功能:返回指定数据库指定表的所有数据的,插入SQL语句

//参数:$link是数据库连接

// $database数据库名

// $table_name表名

//时间:2004年3月23日

//作者:野马

//QQ:46163020

//Email:woaini4651@yahoo.com.cn

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

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

{

mysql_select_db($database, $link);

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

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

while($row = mysql_fetch_row($result))

{

$row_data = "INSERT INTO `".$table_name."` VALUES ('";

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

{

$row_data_arr[$i]=addslashes($row[$i]);

}//end if

//print_r($row_data_arr);

$row_data .= implode("','",$row_data_arr);

$row_data .= "');\n";

$table_data .= $row_data;

}//end while

$table_data .= "\n\n";

return $table_data;

}//end function

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有