在php

时间:2016-08-19 15:14:42

标签: php mysql

我尝试使用此代码恢复数据库但它无法正常工作

$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>

打开文件。

3 个答案:

答案 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";
}

请参阅http://php.net/manual/en/function.exec.php