损坏的文件图标:从 PHP 和 MySQL 数据库检索图像。

3

我需要从数据库上传和检索图片,我能够将图片存储在数据库中,但无法在以后显示它。请帮忙。 我编写了以下代码从数据库检索。

  $result1=mysql_query("INSERT INTO userdata(id, username, firstname, lastname, imageType, image)VALUES('', '" . $_SESSION['username'] . "', '" . $_SESSION['firstname'] . "', '$lastname','{$image_size['mime']}','{$imgData}')") or die("Invalid query: " . mysql_error());
if($result1)
{
echo "</br>";
echo "Registration successful";
echo "</br>";
echo $lastid=mysql_insert_id();//get the id of the last record
echo "uploaded image is :"; ?>
<img src="imageView.php?image_id=<?php echo $lastid; ?>" /><br/>

<?php
echo "</br>";     
}#if result1into db successful
else 
{
echo $result1;
echo "Problem in database operation";

imageView.php有以下代码:

    <?php
    $conn = mysql_connect("localhost", "root", "");
    mysql_select_db("wordgraphic") or die(mysql_error());
         if(isset($_GET['id'])) {
        $sql = "SELECT imageType,image FROM userdata WHERE id=". $_GET['image_id'];
        $result = mysql_query("$sql") or die("<b>Error:</b> Problem on Retrieving Image BLOB<br/>" . mysql_error());
        $row = mysql_fetch_array($result);
        header("Content-type: " . $row["imageType"]);
        echo $row["image"];
         }
    mysql_close($conn);
?>

这段代码可能有什么问题呢? 当我尝试使用静态id运行imageView.php时,图像会被显示。所以我猜测错误在于传递变量的代码:

 echo "uploaded image is :"; ?>
<img src="imageView.php?image_id=<?php echo $lastid; ?>" /><br/>
<?php

可能发生了什么问题?

为什么你使用 if(isset($_GET['id'])) 而不是通过 URI 传递它? - Guilherme Ferreira
实际上,这是一个错别字错误,但即使进行更正也没有产生任何结果。 <img src="imageView.php?id=<?php echo $lastid; ?>" /><br/> - Azra Mahrukh
1个回答

0

只是一个小修正

<img src="imageView.php?image_id=<?php echo $lastid; ?>" />

不要使用这个 src = src路径,你保存图片文件的位置,比如在images文件夹中,这里会存储文件名$imagedata,将文件名存储在数据库中,这样你就可以从图像文件夹中检索它

<img src="images/$imgData" width="your wish" height="your wish"/>

但是我已经将图像保存在数据库中而不是文件夹中,而且实际上不是<img src="imageView.php?image_id=<?php echo $lastid; ?>" />,而是<img src="imageView.php?id=<?php echo $lastid; ?>" />。lastid是最后插入的图像的ID,我想要显示该图像。 - Azra Mahrukh
不要将文件保存在数据库中,最好的做法是将其上传到一个文件夹中,然后将该文件名保存到数据库中。如我所说,在src位置添加该文件夹,并跟随您在数据库中存储的图像名称。通过这种方式,即使只需使用unlink(folderpath / imagename)即可轻松删除该图像。 - Neelesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接