好吧,我已經成功地在PHPMyAdmin中創建了一個數據庫,並使用php備份到客戶端;現在我試圖將該數據庫恢復爲同一環境中的新數據庫。通過客戶端上傳(.sql文件)在PHP中恢復MySQL數據庫
我發現了在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> </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
?>
您在代碼中包含了您的用戶名和密碼。 – FlipperPA
是的,希望你改變了你的密碼 –
你很容易受到[sql注入攻擊](http://bobby-tables.com)('addslashes()'是** NOT **防禦),也容易受到shell再次注射攻擊,'addslashes()'不是辯護。 –