我看了很多關於這個相同問題的其他帖子,但我仍然無法找到我的代碼出了什麼問題。請注意,本週我開始學習PHP和SQL,所以請原諒我犯了一個愚蠢的錯誤。另外,我確定值得注意的是,在標題中發佈的錯誤消息出現之前,還有另一個錯誤(在我的代碼中定義)。這錯誤是:你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行附近使用正確的語法(...)
" already exists."
這告訴我,$_POST["file"]["name"]
變量未設置無論出於何種原因。任何幫助表示讚賞。但是,如果您要告訴我我的代碼容易受到SQL注入的攻擊,我知道這一點。上傳腳本只能通過我的(安全)登錄腳本訪問。再次歡迎所有幫助!
<?php
/* Process uploaded file */
if ($_FILES["file"]["size"] < 2097152)
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
if (file_exists($_POST["class"] . "/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists.";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
$_POST["class"] . "/" . $_FILES["file"]["name"]);
$newpath = mysql_real_escape_string("uploads/" . $_POST['class'] . "/" . $_FILES['file']['name']);
$filename = mysql_real_escape_string($_FILES['file']['name']);
$description = mysql_real_escape_string($_POST["description"]);
echo "Stored in: " . $newpath;
}
}
}
else
{
echo "File must be less than two megabytes.";
}
/* Create and store information in MySQL Database */
$con = mysql_connect("localhost","user","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("1169030_dsp", $con);
$sql="INSERT INTO $_POST[class] (Description, Filename, File)
VALUES
('$description','$filename','$newpath')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Your file was successfully uploaded.";
mysql_close($con);
?>
這裏是我的輸入形式的HTML:
<center>
<form action="uploadfile.php" method="post" style="background-color:#009933;color:#FFFFFF;width:320px;text-align:left;">
Description: <input type="text" name="description"><br>
File: <input type="file" name="file"><br>
Class:<br>
<Select name="Class">
<option value="period1">APES : period1</option>
<option value="period2">Chemistry I : period2</option>
<option value="period3">Lab Assist/Sci : period 3</option>
<option value="period4">Lab Assist/Sci : period 4</option>
<option value="period4">APES : period 4</option>
<option value="period5">APES : period 5</option>
<option value="period6">Lab Assist/Sci : period 6</option>
<option value="period7">Chemistry I : period 7</option>
</Select><br>
<input type="submit" name="Upload">
</form>
<center>
如果你剛剛開始使用PHP,那麼你應該完全避免使用'mysql_ *'函數。他們將被刪除,所以你應該調查其中一個[替代MySQL庫](http://php.net/manual/en/mysqlinfo.api.choosing.php),而不是... –
print $ sql in錯誤。它會幫助你調試。 –
爲便於將來參考,請在將代碼發佈到Internet上之前從代碼中刪除數據庫登錄憑據。我必須在這裏做一些巫術才能將它們移除。 – NullUserException