这个方法我考虑过,但实现起来很麻烦。
(特别是回存时,还要清空数据库,真的很烦。)
还有没有更好的方法。to leejd
假如数据量大呢?那用什么方法来实现好?

解决方案 »

  1.   

    http://y666.net/k666/ib5401/cgi-bin/view.cgi?forum=3&topic=1
      

  2.   

    用法:
    备份: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>全部纪录处理完成!"; 
    ?> 
      

  3.   

    polygame方法可行。
    不过我是剽窃phpMyAdmin中的,花了N个时间终于成功了。导入的是整个数据库,一个一个表导入
    太麻烦了。
    在这里谢谢给过帮助的朋友。~~
    加分~~~~