[英]Restoring a MySQL database in PHP via client upload (.sql file)
Alright, so I've successfully been able to take a database created in PHPMyAdmin, and back it up to the client with php; 好了,所以我已经能够成功地使用PHPMyAdmin创建一个数据库,并使用php将其备份到客户端。 now I'm trying to restore that database as a new database within the same environment.
现在,我正在尝试将该数据库还原为同一环境中的新数据库。
I've found the command that works within mysql, but I can't seem to get it to work with a file that the client uploads from their computer. 我已经找到了可以在mysql中运行的命令,但是似乎无法使其与客户端从其计算机上载的文件一起使用。
Here is the code I have right now: 这是我现在拥有的代码:
<?php
// display form if user has not clicked submit
if (!isset($_POST["btn_submit"]))
{
?>
<!--This will be the form that will hold the information of the entire page.-->
<form enctype="multipart/form-data"class="elegant-aero" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<h1>Restore Database</h1>
<p>
<label>
<span>Database File</span>
<input type="file" name="backupFile" value="Upload File">
</label>
<!--Submit Button-->
<label>
<span> </span>
<input type="submit" name="btn_submit" class="button" value="Add Scenario"/>
</label>
</p>
</form>
<?php
} //end if
else
{
if(isset($_FILES['backupFile']['error']) && UPLOAD_ERR_OK == $_FILES['backupFile']['error'])
{
//Format sql file
$file = addslashes(file_get_contents($_FILES['backupFile']['tmp_name']));
} //end if
//Set up the MySQL Server
$servername = "localhost";
$username = "root";
$password = "password";//hide your password
$dbname = "test";
//Create connection to the MySQL server
$conn = new mysqli($servername, $username, $password);
$sql1 = "CREATE DATABASE test";
if($conn->query($sql1) === TRUE)
{
echo "Database created successfully<br>";
} else {
echo "Error creating database: " . $conn->error;
} //end else
$sql2 = "mysql --user={$username} --password={$password} --database={$dbname} < $file";
if($conn->query($sql2) === TRUE)
{
echo "Information uploaded successfully<br>";
} else {
echo "Error uploading information: " . $conn->error;
} //end else
} //end else
?>
There are a bunch of problems with your code (Where does fileScenDetails come from? What happened to backupFile in the form?), but per your question: 您的代码有很多问题(fileScenDetails是从哪里来的?表单中的backupFile发生了什么?),但是根据您的问题:
$sql2 = "mysql --user={$username} --password={$password} --database={$dbname} < $file";
if($conn->query($sql2) === TRUE)
{
echo "Information uploaded successfully<br>";
} else {
echo "Error uploading information: " . $conn->error;
} //end else
You're trying to run a *nix command as a database query. 您正在尝试运行* nix命令作为数据库查询。 Instead of:
代替:
if($conn->query($sql2) === TRUE)
You'd need to do something like: 您需要执行以下操作:
if(exec($sql2) === TRUE)
You really need to read up on what you're trying to do here, as is it really dangerous, and shouldn't be attempted by beginners. 您确实需要在这里仔细阅读您要尝试做的事情,因为这样做真的很危险,因此初学者不应该尝试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.