gpt4 book ai didi

php - 通过客户端上传(.sql 文件)在 PHP 中恢复 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-29 12:07:42 26 4
gpt4 key购买 nike

好吧,我已经成功地获取了在 PHPMyAdmin 中创建的数据库,并使用 php 将其备份到客户端;现在我正在尝试将该数据库恢复为同一环境中的新数据库。

我找到了在 mysql 中工作的命令,但我似乎无法让它与客户端从其计算机上传的文件一起工作。

这是我现在的代码:

<?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>&nbsp;</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

?>

最佳答案

您的代码存在很多问题(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

您正在尝试运行 *nix 命令作为数据库查询。而不是:

if($conn->query($sql2) === TRUE) 

您需要执行以下操作:

if(exec($sql2) === TRUE)

确实需要仔细阅读您在此处尝试执行的操作,因为它确实很危险,初学者不应尝试。 p>

关于php - 通过客户端上传(.sql 文件)在 PHP 中恢复 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31194777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com