我尝试使用此代码恢复数据库但它无法正常工作
$server_name = "localhost";
$username = "root";
$password = "admin";
$database_name = "uvatravelclone";
$file = basename($_POST["file_open"]);
//$cmd = "mysql -h {$server_name} -u {$username} -p{$password} {$database_name} $file";
$cmd = "mysql -e {$file}";
if (exec($cmd) == true){
echo "succes";
}
else{
echo " error";
}
我需要获取数据的文件名或文件路径,因为我正在使用
<input type=file>
打开文件。
答案 0 :(得分:3)
要知道的事项,当您的HTML表单中有type=file
时,必须使用method="post"
和enctype="multipart/form-data"
示例强>
<form method="post" enctype="multipart/form-data">
<input type="file" name="filename" />
<button>Upload Now</button>
</form>
使用PHP渲染
<?php
$getFile = $_FILES["filename"];
var_dump($getFile); //Prints uploaded file details
//Use copy or move_uploaded_file to store the uploaded file on server
//its always better to use move_uploaded_file for the purpose.
?>
在此链接http://www.w3schools.com/php/php_file_upload.asp中了解更多信息。
答案 1 :(得分:3)
当您使用<input type="file" name="file_open">
时,有关上传文件的信息会放在$_FILES
中,而不是$_POST
。文件内容放入临时文件中,$_FILES['file_open']['tmp_name']
包含此临时文件的路径名。然后,您可以使用mysql
将其重定向到< filename
命令,以进行shell输入重定向。
$server_name = "localhost";
$username = "root";
$password = "admin";
$database_name = "uvatravelclone";
$file = $_FILES['file_open']['tmp_name']
$cmd = "mysql -h {$server_name} -u {$username} -p{$password} {$database_name} < $file";
if (exec($cmd)){
echo "success";
}
else{
echo " error";
}
请注意,exec()
的返回值是命令输出的最后一行,而不是表示成功的true / false值。
答案 2 :(得分:1)
+1给Barmar的答案,但这是另一个提示:exec()
可以获取您执行的命令的退出状态,这是成功或失败的更准确的指标。
传统上,当命令的退出状态为0表示成功,任何非零值表示某些错误。
exec($cmd, $output, $exitStatus);
if (0 == $exitStatus)){
echo "success";
}
else{
echo " error";
}