php程序备份mysql数据库_php mysql 数据库备份程序_PHP教程

/*--------------界面--------------*/if(!$_post['act']){/*----------------------*/

$msgs[]="服务器备份目录为$backup";

$msgs[]="对于较大的数据表,强烈建议使用分卷备份";

$msgs[]="只有选择备份到服务器,才能使用分卷备份功能";

//show_msg($msgs);

?>

into.gif 如果需要备份、还原或者优化大量的数据, 推荐使用"帝国备份王2010"

esweb系统数据备份

选择备份方式

备份全部数据

备份单张表数据

请选择

".$d->f('name')."";}

?>

选择目标位置

备份到服务器

备份到本地

使用分卷备份

分卷备份 k (只有选择备份到服务器,才能使用分卷备份功能)

程序说明

1.对于较大的数据表,强烈建议使用分卷备份.

2.只有选择备份到服务器,才能使用分卷备份功能.

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

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

if(!$tables=$d->query("show table status from $mysqldb"))

{$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();}

$sql="";

while($d->nextrecord($tables))

{

$table=$d->f("name");

$sql.=make_header($table);

$d->query("select * from $table");

$num_fields=$d->nf();

while($d->nextrecord())

{$sql.=make_record($table,$num_fields);}

}

$filename=date("ymd",time())."_all.sql";

if($_post['weizhi']=="localpc") down_file($sql,$filename);

elseif($_post['weizhi']=="server")

{if(write_file($sql,$filename))

$msgs[]="全部数据表数据备份完成,生成备份文件'$backup/$filename'";

else $msgs[]="备份全部数据表失败";

show_msg($msgs);

pageend();

}

/*-----------------不要卷结束*/}/*-----------------------*/

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

if(!$_post['filesize'])

{$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();}

if(!$tables=$d->query("show table status from $mysqldb"))

{$msgs[]="读数据库结构错误"; show_msg($msgs); pageend();}

$sql=""; $p=1;

$filename=date("ymd",time())."_all";

while($d->nextrecord($tables))

{

$table=$d->f("name");

$sql.=make_header($table);

$d->query("select * from $table");

$num_fields=$d->nf();

while($d->nextrecord())

{$sql.=make_record($table,$num_fields);

if(strlen($sql)>=$_post['filesize']*1000){

$filename.=("_v".$p.".sql");

if(write_file($sql,$filename))

$msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'";

else $msgs[]="备份表-".$_post['tablename']."-失败";

$p++;

$filename=date("ymd",time())."_all";

$sql="";}

}

}

if($sql!=""){$filename.=("_v".$p.".sql");

if(write_file($sql,$filename))

$msgs[]="全部数据表-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'";}

show_msg($msgs);

/*---------------------分卷结束*/}/*--------------------------------------*/

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

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

if(!$_post['tablename'])

{$msgs[]="请选择要备份的数据表"; show_msg($msgs); pageend();}

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

$sql=make_header($_post['tablename']);

$d->query("select * from ".$_post['tablename']);

$num_fields=$d->nf();

while($d->nextrecord())

{$sql.=make_record($_post['tablename'],$num_fields);}

$filename=date("ymd",time())."_".$_post['tablename'].".sql";

if($_post['weizhi']=="localpc") down_file($sql,$filename);

elseif($_post['weizhi']=="server")

{if(write_file($sql,$filename))

$msgs[]="表-".$_post['tablename']."-数据备份完成,生成备份文件'$backup/$filename'";

else $msgs[]="备份表-".$_post['tablename']."-失败";

show_msg($msgs);

pageend();

}

/*----------------不要卷结束*/}/*------------------------------------*/

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

if(!$_post['filesize'])

{$msgs[]="请填写备份文件分卷大小"; show_msg($msgs);pageend();}

$sql=make_header($_post['tablename']); $p=1;

$filename=date("ymd",time())."_".$_post['tablename'];

$d->query("select * from ".$_post['tablename']);

$num_fields=$d->nf();

while ($d->nextrecord())

{

$sql.=make_record($_post['tablename'],$num_fields);

if(strlen($sql)>=$_post['filesize']*1000){

$filename.=("_v".$p.".sql");

if(write_file($sql,$filename))

$msgs[]="表-".$_post['tablename']."-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'";

else $msgs[]="备份表-".$_post['tablename']."-失败";

$p++;

$filename=date("ymd",time())."_".$_post['tablename'];

$sql="";}

}

if($sql!=""){$filename.=("_v".$p.".sql");

if(write_file($sql,$filename))

$msgs[]="表-".$_post['tablename']."-卷-".$p."-数据备份完成,生成备份文件'$backup/$filename'";}

show_msg($msgs);

/*----------分卷结束*/}/*--------------------------------------------------*/

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

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

function write_file($sql,$filename)

{

$re=true;

global $backup;

if(!@$fp=fopen($backup."/".$filename,"w+")) {$re=false; echo "failed to open target file";}

if(!@fwrite($fp,$sql)) {$re=false; echo "failed to write file";}

if(!@fclose($fp)) {$re=false; echo "failed to close target file";}

return $re;

}

function down_file($sql,$filename)

{

ob_end_clean();

header("content-encoding: none");

header("content-type: ".(strpos($_server['http_user_agent'], 'msie') ? 'application/octetstream' : 'application/octet-stream'));

header("content-disposition: ".(strpos($_server['http_user_agent'], 'msie') ? 'inline; ' : 'attachment; ')."filename=".$filename);

header("content-length: ".strlen($sql));

header("pragma: no-cache");

header("expires: 0");

echo $sql;

$e=ob_get_contents();

ob_end_clean();

}

function writeable($dir)

{

if(!is_dir($dir)) {

@mkdir($dir, 0777);

}

if(is_dir($dir))

{

if($fp = @fopen("$dir/test.test", 'w'))

{

@fclose($fp);

@unlink("$dir/test.test");

$writeable = 1;

}

else {

$writeable = 0;

}

}

return $writeable;

}

function make_header($table)

{global $d;

$sql="drop table if exists ".$table."n";

$d->query("show create table ".$table);

$d->nextrecord();

$tmp=preg_replace("/n/","",$d->f("create table"));

$sql.=$tmp."n";

return $sql;

}

function make_record($table,$num_fields)

{global $d;

$comma="";

$sql .= "insert into ".$table." values(";

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

{$sql .= ($comma."'".mysql_escape_string($d->record[$i])."'"); $comma = ",";}

$sql .= ")n";

return $sql;

}

function show_msg($msgs)

{

$title="提示:";

echo "";

echo "

".$title."";

echo "

";

while (list($k,$v)=each($msgs))

{

echo "

".$v."";

}

echo "";

}

function pageend()

{

exit();

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值