无法显示图片php

时间:2016-05-19 08:14:38

标签: php

这是我的.php文件

<?php
        ini_set('mysql.connect_timeout',300);
        ini_set('default_socket_timeout',300);
    ?>
    <html>
        <body>
            <form method="post" enctype="multipart/form-data">
            <br/>
                <input type="file" name="image" />
                <br/><br/>
                <input type="submit" name="sumit" value="Upload" />
            </form>
            <?php
                if(isset($_POST['sumit']))
                {
                    if(getimagesize($_FILES['image']['tmp_name']) == FALSE)
                    {
                        echo "Please select an image.";
                    }
                    else
                    {
                        $image= addslashes($_FILES['image']['tmp_name']);

                        $image= file_get_contents($image);
                        $image= base64_encode($image);
                        saveimage($image);
                    }
                }
                displayimage();
                function saveimage($image)
                {
                    $con=mysql_connect("localhost","root","");
                    mysql_select_db("food",$con);
                    $qry="insert into info (image) values ('$image')";
                    $result=mysql_query($qry,$con);
                    if($result)
                    {
                        echo "<br/>Image uploaded.";
                    }
                    else
                    {
                        echo "<br/>Image not uploaded.";
                    }
                }

                function displayimage()
                {
                    $con=mysql_connect("localhost","root","");
                    mysql_select_db("food",$con);
                    $qry="select image from info";
                    $result=mysql_query($qry,$con);
                    while($row = mysql_fetch_assoc($result))
                    {
                        echo '<img height="300" width="300" src="data:image;base64,'.$row[2].' "> ';
                    }
                    mysql_close($con);   
                }
            ?>
        </body>
    </html>

为什么我添加时无法显示图片。当我点击上传但是我无法显示图片时,图片已存储在数据库中。那里的显示代码有什么问题吗?谢谢

2 个答案:

答案 0 :(得分:1)

在您当前的代码更改中

$row[2]替换为$row['image']

并尝试将您的代码转换为评论建议。

答案 1 :(得分:0)

见这一行,

while($row = mysql_fetch_assoc($result)){ ...

您将行作为关联数组而不是数字数组,因此$row[2]无法正常工作。使用$row['image']元素中的<img>来显示图片。

所以你的代码应该是这样的:

while($row = mysql_fetch_assoc($result)){
    echo '<img height="300" width="300" src="data:image;base64,'. $row['image'] . '">';
}

<强>图片的标题说明:

  1. 不要使用mysql_*函数,从PHP 5.5开始不推荐使用它们,并且在PHP 7.0中完全删除它们。请改用mysqlipdoAnd this is why you shouldn't use mysql_* functions
  2. 了解prepared statements因为您的查询现在容易受到SQL注入的影响。另请参阅how you can prevent SQL injection in PHP