2013-03-04 135 views
0

我在php中创建恢复数据库脚本,但它不工作。这是迄今为止的代码php无法恢复备份sql

<form action = '' method = 'POST'> 
      <h2>Restore</h2> 
      <table> 
      <tr><td><input type=file name="file"></td></tr> 
      <tr><td><input type = 'submit' name = "restore" value="restore"></tr></td> 
      </table> 
     </form> 

     <?php 
     $host = 'localhost'; 
     $user = 'root'; 
     $pass = ' '; 
     $dbname = 'itravel'; 
     //date_default_timezone_set('Asia/Kuala_Lumpur'); 
     //$currentdate = date('YmdGis'); 
     $restore_name = $_POST['file']; 
     $custompath = $_POST['path']; 

     if(isset($_POST['restore'])) 
     { 
       $restore = "c:/xampp/mysql/bin/mysql -h $host -u $user $dbname < $backup_name"; 
       system($restore); 

     } 
     ?> 

单击还原按钮后没有任何事情发生。请帮忙

+0

什么是你用'get_mime_type()'的故事吗?你需要自己调试一下。没有足够的可以离开这里。 – Brad 2013-03-04 14:50:39

+0

任何机会,你可以看看日志,看看有什么'c:/ xampp/mysql/bin/mysql -h $ host -u $ user $ dbname <$ backup_name'返回(或者system()的返回值)呼叫)? – Damp 2013-03-04 14:52:23

+0

又一个“为我调试我的代码”的问题......但当然这是PHP指责这个 – 2013-03-04 14:53:19

回答

2
$restore = "c:/xampp/mysql/bin/mysql -h $host -u $user $dbname < $backup_name"; 
                    ^^^^^^^^^^^ 

你没有定义$backup_name。不应该是$restore_name

上传数据也不会出现在$_POST。他们通过$_FILES显示。

你也应该永远不要假设上传成功。特别是对于一个mysql转储文件。有可能上传被截断,但你盲目地将文件反馈到MySQL,这可能会让你部分/完全被删除的数据库。

ALWAYS检查上传错误:

if ($_FILES['files']['error'] !== UPLOAD_ERR_OK) { 
    die("Upload failed with error " . $_FILES['files']['error']); 
} 

$restore_name = $_FILES['files']['tmp_name']; // temp file PHP stores upload in