我在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);
}
?>
单击恢复按钮后没有任何反应。请帮忙
答案 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