无法在PHP中显示来自MySQL数据库的图像

时间:2015-07-06 22:52:35

标签: php mysql database image

我在这里遇到一些问题,希望有人能帮助我。不幸的是,我还没有找到解决方案,所以你是我最后的希望。

我将图片上传到我的数据库,但我无法显示它。我得到的是这个图标,当图像无法找到或加载,但我的数据库充满了图片: - /

这是我的PHP代码:

<?php

$dbhost = "localhost"; 
$dbuser = "DBConnector"; 
$dbpassword = "root"; 
$db = "phplogin";
$b = $_POST['bildbestaetigen'];

if(isset($b)){

if(getimagesize($_FILES['bild']['tmp_name'])== FALSE)
{
    echo "Choose a picture.";
}
else
{
    $image= addslashes($_FILES['bild']['tmp_name']);
    $name = addslashes($_FILES['bild']['name']);
    $image= file_get_contents($image);
    $image= base64_encode($image);
    saveimage($name,$image);
}

}

displayimage();


    function saveimage ($name,$image){

    $link = mysqli_connect("localhost","root","") or die("Verbindung zur Datenbank konnte nicht hergestellt werden!");
    mysqli_select_db($link,"phplogin") or die ("kann nich finden ");
    $result= mysqli_query($link, "insert into bilder (name,bild) values ('".$name."','".$image."')");

    if($result)
    {

        echo "Image uploaded";

    }
    else
    {
        echo "<br/> Image not uploaded";
    }

    }


function displayimage(){
$link = mysqli_connect("localhost","root","") or die("Verbindung zur    Datenbank konnte nicht hergestellt werdengjghghghh");
    mysqli_select_db($link,"phplogin") or die ("kann nich finden ");

    $result = mysqli_query($link,"SELECT * from bilder");
    while( $row = mysqli_fetch_array($result));
    {
    echo '<img height="300"  width="300" src="data:bild;base64,'.$row[2].'         ">';

    }
    mysqli_close($link);    
}


?>

我没有运气就尝试了很多东西。

我希望有人可以帮助我!

2 个答案:

答案 0 :(得分:0)

在PHP上传时使用此W3Schools tutorial。如注释中所述,将图像路径保存在数据库中,而不是文件本身,这可能需要blob数据类型,并且可以非常快速地使数据库膨胀。

为此,通过使用$ _FILES数组指定目标文件夹(确保文件夹存在)并使用move_uploaded_file,将用户选择的文件从HTML表单上传到您的网络服务器上作为物理文件()函数:

$targetfile = "uploads/" .basename($_FILES['bild'])
...
# FILE VALIDATION
...
move_uploaded_file($_FILES['bild']['tmp_name'], $targetfile)

然后,将此图像路径(文本字符串)保存到数据库中(假设这里bild是文本数据类型):

insert into bilder (name,bild) values ('".$name."','".$targetfile."')

最后,正如您在从数据库表中获取记录之前所做的那样,并在html的img标记的src属性中回显图像路径(顺便过滤SQL查询到特定用户或图像ID,因为多个记录可能会输出):< / p>

echo '<img height="300" width="300" src="'.$row[2].'">';

请记住$ targetfile变量将包含图像位置的完整绝对路径。

答案 1 :(得分:0)

  

嗨,假设您已将图像正确上传到数据库中   和服务器内的某个文件夹。您可以使用此代码   打印出来。

<?php
//codes to connect to database and mysql query to get image name from table inside database...

$target_dir = "uploads/"; //path of where the images are store on your server
$image_name = $row_image['image_name']; //name of the image retrieved by mysql query

                //print the image
echo "<img src=" . "'" . $target_dir . "/" . $image_name . "'" . "style='width:50px;height:50px'/>";
?>