【发布时间】:2017-11-04 18:49:47
【问题描述】:
我有两个 php 页面 adp3.php(表单页面)和 adp4.php(将内容上传到数据库)
adp3.php:
<form method="POST" enctype="multipart/form-data">
<label>SUBJECT:</label><select name="subject">
<?php
$query="SELECT * FROM subject WHERE SyllabusID=".$batch1." and SemID=".$sems."";
$result=mysqli_query($con, $query);
//loop
foreach($result as $subject){
?>
<option value="<?php echo $subject['SubjectID']."-".$subject['SubjectName']; ?>"><?php echo $subject['SubjectName']; ?></option>
<?php
}
?>
</select>
<br>
DATE: <select name="date">
<option>MAY/JUNE</option>
<option>NOV/DEC</option>
</select>
<p color="white">YEAR: <input type="varchar" name="year"/></p></br>
<p color="white">PAPER LINK: <input type="file" name="file"/></p></br>
<br>
<button formaction="adp4.php" class="btn-login">GO</button>
adp4:
<?php
$date =$_POST['date'];
$year=$_POST['year'];
$file=$_FILES['file'];
if($date && $year)
{ mysql_connect("localhost","root","") or die("we couldnt connect");
mysql_select_db("dbmsproj");
$result=mysql_query("INSERT INTO paper(SubjectID,Date,Dlink) values('$subid','$date $year','$file')");
?> <p color="white"><?php echo "Paper SUCCESSFULLY ADDED TO THE DATABASE";
}
else
{?>
<p color="white"><?php echo "ALL FIELDS NEED TO BE FILLED ";
}
?>
除了文件路径(在文件路径字段中显示“数组”)之外,数据库中的所有内容都已正确输入。请帮助
更新:(问题已解决)谢谢你们帮助我。我的代码终于可以工作了。你们是最好的
【问题讨论】:
-
您必须使用
move_uploaded_file()手动将文件放入您的目录,然后插入数据库字段的路径 -
我不会存储路径,只存储文件名。路径可能会改变,如果您最终在某个时候移动了一些东西,您将不需要更新所有这些记录。 (或使用符号链接,哎呀)例如,在我的工作中,我们在数据库中存储了 90k pdf,在过去的 4 年中,我们已经迁移了 3 台服务器。 (和一个域名)
-
我推荐的另一件事是使用哈希重命名文件。 (如 sha1 )然后将其保存到带有时间戳和哈希的文件系统
time().hash().pdf然后将用户的文件名(原始名称)保存在数据库中(这样你就可以假装它的名字)。您不会相信 PPL 放入文件名中的垃圾文件,所有类型的东西都会弄乱您的 URL 等等。我什至有人将'或"放在文件名中,这很糟糕。为什么请参阅stackoverflow.com/questions/28504839/… -
哦,好的,我会试试????
-
谢谢????????????????现在我的代码终于可以工作了。你是最好的