php无法恢复备份sql

时间:2013-03-04 14:49:15

标签: php mysql

我在php中创建了一个恢复数据库脚本,但它无法正常工作。这是到目前为止的代码

<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);

        }
        ?>
单击恢复按钮后没有任何反应。请帮忙

1 个答案:

答案 0 :(得分:2)

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

您无处定义$backup_name。不应该是$restore_name

上传也不会出现在$_POST中。它们通过$_FILES显示。

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

始终检查上传错误:

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