Php 将上传到服务器上的图像路径存储在数据库中

Php 将上传到服务器上的图像路径存储在数据库中,php,Php,我已成功将图像上载到服务器上名为propertyimages的文件夹中,但问题是我无法将上载图像的路径保存到数据库中 表格编号为: <form action="admin_insert_property_images.php" method="post" enctype="multipart/form-data"> <label for="file">Upload images:</label> <input type="file" name="file

我已成功将图像上载到服务器上名为
propertyimages
的文件夹中,但问题是我无法将上载图像的路径保存到数据库中

表格编号为:

<form action="admin_insert_property_images.php" method="post" enctype="multipart/form-data">
<label for="file">Upload images:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

上载图像:

admin\u insert\u property\u images.php的代码为:

    <?php


$con=mysqli_connect("localhost","root","","db");
// Check connection
if (mysqli_connect_errno()) 
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts))  
{
if ($_FILES["file"]["error"] > 0) 
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
} 
else 
{
if (file_exists("propertyimages/" . $_FILES["file"]["name"])) 
{
echo $_FILES["file"]["name"] . " already exists. ";
} 
else 
{

$imagepath = "propertyimages/" . $_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"], $imagepath);
$sql="INSERT INTO propertyimages(propertyimage) VALUES ('".$imagepath."')";
if (!mysqli_query($con,$sql)) 
{
die('Error: ' . mysqli_error($con));
}
}
}
} 
else    
{
echo "Invalid file";
}
mysqli_close($con);
?>

根据您的代码,似乎您没有运行查询,您应该运行您的查询:

$sql="INSERT INTO propertyimages(propertyimage) VALUES ('$imagepath')";
$mysqli->query($sql);

查看更多详细信息:

看起来您没有为$imagePath变量指定与上载到的路径相同的路径。 代码也没有显示您正在执行查询

更改代码的else部分:

 else {
      $imagepath = "propertyimages/" . $_FILES["file"]["name"];
      move_uploaded_file($_FILES["file"]["tmp_name"], $imagepath);

      $sql="INSERT INTO propertyimages(propertyimage) VALUES ('".$imagepath."')";
      $mysqli->query($sql);

    }
或者类似,这取决于您使用的是mysql还是mysqli

但是,在将其用作生产代码之前,我强烈建议阅读mysql转义/更好的方法来验证上传的文件实际上是图像(如果有人愿意,很容易伪造类型)-最好使用GD之类的工具来处理上载的图像,并检查它是否可以作为图像处理/保存,以确保不允许上载任何恶意内容

一些建议员额:


您是否遇到错误,或者存储的路径是错误的?@Rizier123我在查询部分遇到错误,因为行$imagepath=“.upload/”$\u FILES[“file”][“name”];然后向您发布错误消息,以便我们能够更好地定位错误!@Rizier123我收到一个错误,错误是:Parse error:syntax error,第$imagepath=“”行中出现意外的T_字符串。“propertyimages/”$_文件[“文件”][“名称”];我在$imagepath=“.”propertyimages/“$\u FILES[“file”][“name”]”行中收到一个错误;似乎有语法错误,但我无法识别iti。我在说[function.move uploaded file]:打开流失败时收到一个错误:抱歉-将$imagepath=行中的“tmp\u name”引用更改为“name”。(答案也更改)。我输入了一个错误。这有帮助吗?我遇到了一个错误致命的错误:调用非对象上的成员函数query()。确定-如何启动数据库连接?以下是开始代码:$con=mysqli_connect(“localhost”、“root”、“photos”);//如果(mysqli_connect_errno()){echo”无法连接到MySQL,请检查连接:“.mysqli_connect_error();}