这里是问题所在:文件名没有保存到数据库中。文件正在上传到服务器,但文件名根本不会保存。文件上传成功后,我可以回显文件名,但无论出于何种原因,它确实想将文件名保存到数据库中。我确信这是一个简单的修复,我只是遗漏了一些东西(我希望如此)。
提前致谢。
(附:是的,我知道我应该使用 mysqli)
HTML:
<form action="" name="loa" method="post" enctype="multipart/form-data">
<input type="hidden" name="size" value="350000">
<input type="file" name="loa">
<input type="submit" name="loasub" value="Upload Letter of Authorization">
</form>
PHP:
<?php
if (!empty($_POST['loasub'])) {
$target = "loa/";
$target = $target . basename( $_FILES['loa']['name']);
$theloa = ($_FILES['loa']['name']);
mysql_connect("localhost", "user", "pass") or die(mysql_error()) ;
mysql_select_db("mydb") or die(mysql_error()) ;
//Writes the information to the database
mysql_query("UPDATE customers SET loa='$theloa' WHERE id='30'") ;
if(move_uploaded_file($_FILES['loa']['tmp_name'], $target))
{
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
echo $theloa;
}
else {
echo "Sorry, there was a problem uploading your file.";
}
}
?>
最佳答案
需要考虑的几件事:
mysql_*
函数已弃用。请改用mysqli
或PDO
。- 如果变量
$theloa
中有单引号,您的查询可能会中断。使用准备好的语句来防止此类错误并防止(警笛声和红灯闪烁)SQL 注入(inject)。
考虑做一个 var_dump($_FILES['loa']['name'])
并将其粘贴到您的问题中,以便更清楚。
尝试使用文件的以下修改后的 mysqli
版本(您需要在 PHP 安装中启用 mysqli
扩展)。它应该(理想情况下)有效。
<?php
if (!empty($_POST['loasub'])) {
$theloa = ($_FILES['loa']['name']);
$target = "loa/";
$target = $target . basename($theloa);
$mysqli = new mysqli("localhost", "user", "password", "mydb");
if (mysqli_connect_errno()) {
die(mysqli_connect_error());
}
//Writes the information to the database
if ($preparedStatement = $mysqli->prepare("UPDATE customers SET loa=? WHERE id=30")) {
$preparedStatement->bind_param("s", $theloa);
$executionResult = $preparedStatement->execute();
if (!$executionResult) {
die("Query execution failed!");
}
//$preparedStatement->bind_result($sqlOutput); // bind mysql output to an output variable
//$preparedStatement->fetch(); // fetch mysql output
//var_dump($sqlOutput); // dump the sql output
$preparedStatement->close();
}
$mysqli->close();
if(move_uploaded_file($_FILES['loa']['tmp_name'], $target))
{
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
echo $theloa;
}
else {
echo "Sorry, there was a problem uploading your file.";
}
}
?>
关于php - 上传文件到服务器,但文件名没有保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14036104/