0

我正在用 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);

        }
        ?>

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

4

1 回答 1

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
于 2013-03-04T14:51:56.277 回答