larvare数据库引入php_PHP数据库备份与恢复

1

2 global $mysqlhost, $mysqluser, $mysqlpwd, $mysqldb;3 $mysqlhost=""; //host name

4 $mysqluser=""; //login name

5 $mysqlpwd=""; //password

6 $mysqldb=""; //name of database

7

8 include("mydb.php");9 $d=new db($mysqlhost,$mysqluser,$mysqlpwd,$mysqldb);10 /*--------------界面--------------*/if(!$_POST['act']){/*----------------------*/

11 $msgs[]="服务器备份目录为backup";12 $msgs[]="对于较大的数据表,强烈建议使用分卷备份";13 $msgs[]="只有选择备份到服务器,才能使用分卷备份功能";14 show_msg($msgs);15 ?>

16

17

18

数据备份

19

备份方式

20

备份全部数据备份全部数据表中的数据到一个备份文件

21

备份单张表数据22 请选择

23

24 $d->query("show table status from $mysqldb");25 while($d->nextrecord()){26 echo "".$d->f('Name')."";}27 ?>

28

备份选中数据表中的数据到单独的备份文件

29

使用分卷备份

30

31 分卷备份 K

32

选择目标位置

33

备份到服务器

34 备份到本地

35

36

37 /*-------------界面结束-------------*/}/*---------------------------------*/

38 /*----*/else{/*--------------主程序-----------------------------------------*/

39 if($_POST['weizhi']=="localpc"&&$_POST['fenjuan']=='yes')40 {$msgs[]="只有选择备份到服务器,才能使用分卷备份功能";41 show_msg($msgs); pageend();}42 if($_POST['fenjuan']=="yes"&&!$_POST['filesize'])43 {$msgs[]="您选择了分卷备份功能,但未填写分卷文件大小";44 show_msg($msgs); pageend();}45 if($_POST['weizhi']=="server"&&!writeable("./backup"))46 {$msgs[]="备份文件存放目录'./backup'不可写,请修改目录属性";47 show_msg($msgs); pageend();}48

49 /*----------备份全部表-------------*/if($_POST['bfzl']=="quanbubiao"){/*----*/

50 /*----不分卷*/if(!$_POST['fenjuan']){/*--------------------------------*/

51 if(!$tables=$d->query("show table status from $mysqldb"))52 {$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();}53 $sql="";54 while($d->nextrecord($tables))55 {56 $table=$d->f("Name");57 $sql.=make_header($table);58 $d->query("select * from $table");59 $num_fields=$d->nf();60 while($d->nextrecord())61 {$sql.=make_record($table,$num_fields);}62 }63 $filename=date("Ymd",time())."_all.sql";64 if($_POST['weizhi']=="localpc") down_file($sql,$filename);65 elseif($_POST['weizhi']=="server")66 {if(write_file($sql,$filename))67 $msgs[]="全部数据表数据备份完成,生成备份文件'./backup/$filename'";68 else $msgs[]="备份全部数据表失败";69 show_msg($msgs);70 pageend();71 }72 /*-----------------不要卷结束*/}/*-----------------------*/

73 /*-----------------分卷*/else{/*-------------------------*/

74 if(!$_POST['filesize'])75 {$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();}76 if(!$tables=$d->query("show table status from $mysqldb"))77 {$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();}78 $sql=""; $p=1;79 $filename=date("Ymd",time())."_all";80 while($d->nextrecord($tables))81 {82 $table=$d->f("Name");83 $sql.=make_header($table);84 $d->query("select * from $table");85 $num_fields=$d->nf();86 while($d->nextrecord())87 {$sql.=make_record($table,$num_fields);88 if(strlen($sql)>=$_POST['filesize']*1000){89 $filename.=("_v".$p.".sql");90 if(write_file($sql,$filename))91 $msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'./backup/$filename'";92 else $msgs[]="备份表-".$_POST['tablename']."-失败";93 $p++;94 $filename=date("Ymd",time())."_all";95 $sql="";}96 }97 }98 if($sql!=""){$filename.=("_v".$p.".sql");99 if(write_file($sql,$filename))100 $msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'./backup/$filename'";}101 show_msg($msgs);102 /*---------------------分卷结束*/}/*--------------------------------------*/

103 /*--------备份全部表结束*/}/*---------------------------------------------*/

104

105 /*--------备份单表------*/elseif($_POST['bfzl']=="danbiao"){/*------------*/

106 if(!$_POST['tablename'])107 {$msgs[]="请选择要备份的数据表"; show_msg($msgs); pageend();}108 /*--------不分卷*/if(!$_POST['fenjuan']){/*-------------------------------*/

109 $sql=make_header($_POST['tablename']);110 $d->query("select * from ".$_POST['tablename']);111 $num_fields=$d->nf();112 while($d->nextrecord())113 {$sql.=make_record($_POST['tablename'],$num_fields);}114 $filename=date("Ymd",time())."_".$_POST['tablename'].".sql";115 if($_POST['weizhi']=="localpc") down_file($sql,$filename);116 elseif($_POST['weizhi']=="server")117 {if(write_file($sql,$filename))118 $msgs[]="表-".$_POST['tablename']."-数据备份完成,生成备份文件'./backup/$filename'";119 else $msgs[]="备份表-".$_POST['tablename']."-失败";120 show_msg($msgs);121 pageend();122 }123 /*----------------不要卷结束*/}/*------------------------------------*/

124 /*----------------分卷*/else{/*--------------------------------------*/

125 if(!$_POST['filesize'])126 {$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();}127 $sql=make_header($_POST['tablename']); $p=1;128 $filename=date("Ymd",time())."_".$_POST['tablename'];129 $d->query("select * from ".$_POST['tablename']);130 $num_fields=$d->nf();131 while ($d->nextrecord())132 {133 $sql.=make_record($_POST['tablename'],$num_fields);134 if(strlen($sql)>=$_POST['filesize']*1000){135 $filename.=("_v".$p.".sql");136 if(write_file($sql,$filename))137 $msgs[]="表-".$_POST['tablename']."-卷-".$p."-数据备份完成,生成备份文件'./backup/$filename'";138 else $msgs[]="备份表-".$_POST['tablename']."-失败";139 $p++;140 $filename=date("Ymd",time())."_".$_POST['tablename'];141 $sql="";}142 }143 if($sql!=""){$filename.=("_v".$p.".sql");144 if(write_file($sql,$filename))145 $msgs[]="表-".$_POST['tablename']."-卷-".$p."-数据备份完成,生成备份文件'./backup/$filename'";}146 show_msg($msgs);147 /*----------分卷结束*/}/*--------------------------------------------------*/

148 /*----------备份单表结束*/}/*----------------------------------------------*/

149

150 /*---*/}/*-------------主程序结束------------------------------------------*/

151

152 function write_file($sql,$filename)153 {154 $re=true;155 if(!@$fp=fopen("./backup/".$filename,"w+")) {$re=false; echo "failed to open target file";}156 if(!@fwrite($fp,$sql)) {$re=false; echo "failed to write file";}157 if(!@fclose($fp)) {$re=false; echo "failed to close target file";}158 return $re;159 }160

161 function down_file($sql,$filename)162 {163 ob_end_clean();164 header("Content-Encoding: none");165 header("Content-Type: ".(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'application/octetstream' : 'application/octet-stream'));166

167 header("Content-Disposition: ".(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'inline; ' : 'attachment; ')."filename=".$filename);168

169 header("Content-Length: ".strlen($sql));170 header("Pragma: no-cache");171

172 header("Expires: 0");173 echo $sql;174 $e=ob_get_contents();175 ob_end_clean();176 }177

178 function writeable($dir)179 {180

181 if(!is_dir($dir)) {182 @mkdir($dir, 0777);183 }184

185 if(is_dir($dir))186 {187

188 if($fp = @fopen("$dir/test.test", 'w'))189 {190 @fclose($fp);191 @unlink("$dir/test.test");192 $writeable = 1;193 }194 else{195 $writeable = 0;196 }197

198 }199

200 return $writeable;201

202 }203

204 function make_header($table)205 {global $d;206 $sql="DROP TABLE IF EXISTS ".$table."\n";207 $d->query("show create table ".$table);208 $d->nextrecord();209 $tmp=preg_replace("/\n/","",$d->f("Create Table"));210 $sql.=$tmp."\n";211 return $sql;212 }213

214 function make_record($table,$num_fields)215 {global $d;216 $comma="";217 $sql .= "INSERT INTO ".$table." VALUES(";218 for($i = 0; $i < $num_fields; $i++)219 {$sql .= ($comma."'".mysql_escape_string($d->record[$i])."'"); $comma = ",";}220 $sql .= ")\n";221 return $sql;222 }223

224 function show_msg($msgs)225 {226 $title="提示:";227 echo "

".$title."
  • ";230 while (list($k,$v)=each($msgs))231 {232 echo "
  • ".$v."";233 }234 echo "
";235 }236

237 functionpageend()238 {239 exit();240 }241 ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值