~~~MYSQL数据库的备份和回存~~~ 这个方法我考虑过,但实现起来很麻烦。(特别是回存时,还要清空数据库,真的很烦。)还有没有更好的方法。to leejd假如数据量大呢?那用什么方法来实现好? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://y666.net/k666/ib5401/cgi-bin/view.cgi?forum=3&topic=1 用法:备份:url/back.php?table=tablename恢复:url/up.php?table=tablenameback.php <? if($table=="")exit(); mysql_connect("localhost","root",""); mysql_select_db("polygame"); $result = mysql_query("select * from $table"); if(mysql_num_rows($result) <= 0) exit(); echo "开始转换数据到文本... "; $handle = fopen("$table.txt","w"); $numfields = mysql_num_fields($result); fputs($handle,$numfields."\r\n"); for($k=0;$k<mysql_num_rows($result);$k++) { $msg = mysql_fetch_row($result); for($i=0;$i<$numfields;$i++) { $msg[$i] = str_replace("\r\n","||回车||",$msg[$i]); $msg[$i] = str_replace("\n" ,"||回车||",$msg[$i]); fputs($handle,$msg[$i]."\r\n"); } } fclose($handle); chmod("$table.txt",0777); echo "ok"; ?> up.php <? if($table=="")exit(); mysql_connect("localhost","root",""); mysql_select_db("polygame"); $message = fi1e ("$table.txt"); $numfields = chop($message[0]); for($k=1;$k<count($message);$k+=($numfields)) { $no++; $value=""; for ($i=$k;$i<($k+$numfields-1);$i++) { $tmp = str_replace("||回车||","\r\n",chop($message[$i])); $value .= "'".addslashes($tmp)."',"; } $tmp = str_replace("||回车||","\r\n",chop($message[$k+$numfields-1])); $value .= "'".$tmp."'"; $query = "insert into $table values (".$value.")"; print "<br>\r\n"; echo "处理第".$no."条纪录....."; mysql_query($query) or die("错误"); print "OK"; } echo "<br><br>全部纪录处理完成!"; ?> polygame方法可行。不过我是剽窃phpMyAdmin中的,花了N个时间终于成功了。导入的是整个数据库,一个一个表导入太麻烦了。在这里谢谢给过帮助的朋友。~~加分~~~~ 关于myISAM插入次数和硬盘io写次数的关系问题 Can't create a new thread (errno -1); if you are not out of available memory?? MYSQL不支持递归函数? 请问mysql 锁等待设置方法 mysql没有事务,那么出错了怎么办? mysql有没有复合主键 phpmyadmin 的一个问题 求教:找不到 mysqlclient 文件如何处理? MYSQL查询的性能问题 MYSQL单个字段导出问题。 MYSQL库中有一日期型字段RQ,怎么取RQ中的年、月、日? 请问MySql for Windows是要注册的吗?
备份:url/back.php?table=tablename
恢复:url/up.php?table=tablename
back.php
<?
if($table=="")exit();
mysql_connect("localhost","root","");
mysql_select_db("polygame");
$result = mysql_query("select * from $table");
if(mysql_num_rows($result) <= 0) exit();
echo "开始转换数据到文本...
";
$handle = fopen("$table.txt","w");
$numfields = mysql_num_fields($result);
fputs($handle,$numfields."\r\n"); for($k=0;$k<mysql_num_rows($result);$k++)
{
$msg = mysql_fetch_row($result);
for($i=0;$i<$numfields;$i++)
{
$msg[$i] = str_replace("\r\n","||回车||",$msg[$i]);
$msg[$i] = str_replace("\n" ,"||回车||",$msg[$i]);
fputs($handle,$msg[$i]."\r\n");
}
}
fclose($handle);
chmod("$table.txt",0777);
echo "ok";
?> up.php <?
if($table=="")exit();
mysql_connect("localhost","root","");
mysql_select_db("polygame");
$message = fi1e ("$table.txt");
$numfields = chop($message[0]);
for($k=1;$k<count($message);$k+=($numfields))
{
$no++;
$value="";
for ($i=$k;$i<($k+$numfields-1);$i++)
{
$tmp = str_replace("||回车||","\r\n",chop($message[$i]));
$value .= "'".addslashes($tmp)."',";
}
$tmp = str_replace("||回车||","\r\n",chop($message[$k+$numfields-1]));
$value .= "'".$tmp."'";
$query = "insert into $table values (".$value.")"; print "<br>\r\n";
echo "处理第".$no."条纪录.....";
mysql_query($query) or die("错误");
print "OK";
}
echo "<br><br>全部纪录处理完成!";
?>
不过我是剽窃phpMyAdmin中的,花了N个时间终于成功了。导入的是整个数据库,一个一个表导入
太麻烦了。
在这里谢谢给过帮助的朋友。~~
加分~~~~